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 仅将唯一值添加到数组中的主要内容,如果未能解决你的问题,请参考以下文章

OpenOffice Calc 仅将唯一值移动到新列

以更高的效率将嵌套数组中的值添加到唯一列表中

通过唯一整数将 numpy 数组值作为列添加到 DataFrame

php 从数组中获取唯一值

将PHP数组中的唯一值插入SQL表[重复]

将整个PHP数组散列成唯一值[重复]