【问题标题】:How do I find duplicates in a PHP array?如何在 PHP 数组中查找重复项?
【发布时间】:2018-05-05 17:48:12
【问题描述】:

是否可以在数组值中找到重复项?喜欢:-

$cars = array("Volvo", "BMW", "Toyota", "BMW", "Toyota");

由于 BMWToyota 出现两次输出将是 BMWToyota 我知道 array_search() 但你必须提供你想要搜索的内容.. 我可以根据键匹配数组值,但数组的大小可能会有所不同,如果有人帮助我,那就太好了。

【问题讨论】:

  • “匹配值”是什么意思?您是在问“如何在 PHP 数组中查找重复项?”
  • @tadman 是的,我想查找重复项
  • 有很多方法可以得到一系列独特的物品......你到底想做什么?

标签: php arrays


【解决方案1】:

一种选择是使用array_count_values(),并且只包含具有多个值的数组元素。

$cars = array("Volvo", "BMW", "Toyota", "BMW", "Toyota");

foreach( array_count_values($cars) as $key => $val ) {
    if ( $val > 1 ) $result[] = $key;   //Push the key to the array sice the value is more than 1
}

echo "<pre>";
print_r( $result );
echo "</pre>";

这将导致:

Array
(
    [0] => BMW
    [1] => Toyota
)

文档:array_count_values()

【讨论】:

    【解决方案2】:

    你可以这样做

    function array_match_dump($array){
       return array_unique(array_diff_assoc($array,array_unique($array)));
    }
    

    【讨论】:

      【解决方案3】:

      通过结合

      可以实现更简单和优雅的解决方案

      array_uniquearray_diff_assoc

      $cars = array("Volvo", "BMW", "Toyota", "BMW", "Toyota");
      $duplicates = array_unique( array_diff_assoc( $cars, array_unique( $cars ) ) );
      

      结果如下:

      Array
      (
          [3] => BMW
          [4] => Toyota
      )
      

      【讨论】:

        猜你喜欢
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        相关资源
        最近更新 更多