PHP 仅将唯一值添加到数组中
Posted
技术标签:
【中文标题】PHP 仅将唯一值添加到数组中【英文标题】:PHP Only add unique value into an array 【发布时间】:2022-01-24 02:34:15 【问题描述】:我正在将数据从 WHILE 循环内的一批 PLIST 文件中添加到数组中,但是我有一些重复的 PLIST 文件,我不想再次将它们添加到数组中。所以我使用了这段代码,但仍然添加了重复的条目。
$tmp= array($title, $bundle, $url);
if (!in_array($tmp, $array))
array_push($array, $tmp);
所以 $array 的输出类似于
Array
(
[0] => Array
(
[0] => SimpleXMLElement Object
(
[0] => SamanBank
)
[1] => SimpleXMLElement Object
(
[0] => 4.5.0
)
[2] => SimpleXMLElement Object
(
[0] => https://example.ir/wRteD2G8Lyk.ipa
)
)
[1] => Array
(
[0] => SimpleXMLElement Object
(
[0] => FiLMiC Pro-Video Camera Hacked
)
[1] => SimpleXMLElement Object
(
[0] => 6.9.7.1
)
[2] => SimpleXMLElement Object
(
[0] => https://example.ir/wRteD23SLgs.ipa
)
)
[2] => Array
(
[0] => SimpleXMLElement Object
(
[0] => Noizio — focus, relax, sleep
)
[1] => SimpleXMLElement Object
(
[0] => 7.2.501
)
[2] => SimpleXMLElement Object
(
[0] => https://example.ir/wRteD2G8Afe.ipa
)
)
[3] => Array
(
[0] => SimpleXMLElement Object
(
[0] => SamanBank
)
[1] => SimpleXMLElement Object
(
[0] => 4.5.0
)
[2] => SimpleXMLElement Object
(
[0] => https://example.ir/wRteD2G8Lyk.ipa
)
)
所以第一个数组重复了两次。如何编辑上述代码以跳过将重复的条目推送到数组中?
【问题讨论】:
在检查if (!in_array($tmp, $array))
之前,您是否尝试过将SimpleXMLElement
转换为数组
不,我没有。你能解释一下为什么它被保存为这个,我应该如何转换?
我认为您的in_array
检查可能失败,因为它是一个对象
【参考方案1】:
好吧,正如 Dula 正确提到的,我在代码中犯的一个小错误是我在推送到数组之前没有将 Xml 转换为字符串。
所以代码来自:
$title= $xml->dict->array->dict->dict->string[3];
应该改为:
$title= (string)$xml->dict->array->dict->dict->string[3];
现在,
if (!in_array($tmp, $array))
array_push($array, $tmp);
我有一个独特的数组!
Array
(
[0] => Array
(
[0] => SamanBank
[1] => 4.5.0
[2] => https://example.ir/wRteD2G8Lyk.ipa
)
[1] => Array
(
[0] => FiLMiC Pro-Video Camera Hacked
[1] => 6.9.7.1
[2] => https://example.ir/wRteD23SLgs.ipa
)
[2] => Array
(
[0] => Noizio — focus, relax, sleep
[1] => 7.2.501
[2] => https://example.ir/wRteD2G8Afe.ipa
)
【讨论】:
以上是关于PHP 仅将唯一值添加到数组中的主要内容,如果未能解决你的问题,请参考以下文章