【问题标题】:PHP - Remove duplicates from array of objects [duplicate]PHP - 从对象数组中删除重复项[重复]
【发布时间】:2013-05-27 21:51:46
【问题描述】:

删除 dups 或创建没有 dups 的新数组最有效的方法是什么?是否有任何内置的 PHP 函数可以节省这种手动删除?

[2013-05-27 22:35:55]: Array
(
    [0] => stdClass Object
        (
            [type] => 1
            [val] => 1111
        )

    [1] => stdClass Object
        (
            [type] => 1
            [val] => 2222
        )

    [2] => stdClass Object
        (
            [type] => 1
            [val] => 1111
        )

    [3] => stdClass Object
        (
            [type] => 1
            [val] => 2222
        )
)

非常感谢,卢克

【问题讨论】:

标签: php arrays


【解决方案1】:

我怀疑在这种情况下是否有比foreach() 循环更快的方法。

【讨论】:

    【解决方案2】:

    首先,您必须确定重复项的含义,例如在上面的数组中,02 中的项目可能指的是同一个实例,也可能是两个完全不同的实例实例。

    查看here 以了解有关比较 PHP 中对象的更多信息。

    简而言之,如果重复是指对同一对象的引用,那么你很幸运,因为使用 array_unique 真的很容易:

    array_unique($array);
    

    会做的。

    另一方面,如果你想删除具有相同值的对象,我猜这不太可能,那么你可以使用array_filter,它需要一个回调函数来删除数组中的项目.我把回调的编程留给你。 ;)

    【讨论】:

      【解决方案3】:

      array_unique 应该可以帮到你。 array_unique

      查看此键盘here

      【讨论】:

      • 这仅适用于非 Object 值,与原始问题不同。
      猜你喜欢
      • 2017-04-10
      • 2019-02-28
      • 1970-01-01
      • 2018-07-22
      • 2014-08-24
      • 2016-03-12
      相关资源
      最近更新 更多