php中数组中重复元素的数量

时间:2012-11-16 09:09:03

标签: php multidimensional-array

您好,    我们如何在multidimensional array

中找到重复元素的数量

我有一个像这样的数组

Array
(
    [0] => Array
        (
            [lid] => 192
            [lname] => sdsss
        )

    [1] => Array
        (
            [lid] => 202
            [lname] =>  testing
        )

    [2] => Array
        (
            [lid] => 192
            [lname] => sdsss
        )

    [3] => Array
        (
            [lid] => 202
            [lname] =>  testing
        )

)

如何查找每个元素的数量?

,即标识为192202等的条目数

8 个答案:

答案 0 :(得分:18)

你可以采用这个技巧;将数组的每个项目(这是一个数组本身)映射到其各自的['lid']成员,然后使用array_count_value()为您进行计数。

array_count_values(array_map(function($item) {
    return $item['lid'];
}, $arr);

另外,它是一个单行,因此增加了精英黑客的地位。

更新

从5.5开始,您可以将其缩短为:

array_count_values(array_column($arr, 'lid'));

答案 1 :(得分:2)

foreach ($array as $value) 
{
    $numbers[$value[lid]]++;
}
foreach ($numbers as $key => $value) 
{
    echo 'numbers of '.$key.' equal '.$value.'<br/>';
}

答案 2 :(得分:2)

以下代码将计算数组的重复元素。请查看它并尝试此代码

 $arrayChars=array("green","red","yellow","green","red","yellow","green");

    $arrLength=count($arrayChars);
    $elementCount=array();
  for($i=0;$i<$arrLength-1;$i++)
    {
       $key=$arrayChars[$i];
      if($elementCount[$key]>=1)
       {
          $elementCount[$key]++;
       } else  {
          $elementCount[$key]=1;
       }


   }

   echo "<pre>";
   print_r($elementCount);

输出:
  排列  (     [green] =&gt; 3     [red] =&gt; 2     [黄色] =&gt; 2  )

您还可以在以下链接中查看类似处理的类似问题 http://solvemyquest.com/count-duplicant-element-array-php-without-using-built-function/

答案 3 :(得分:0)

以下代码将获取所有这些代码的计数 - 任何&gt;最后1将重复。

<?php
$lidCount = array();
$lnameCount = array();

foreach ($yourArray as $arr) {

  if (isset($lidCount[$arr['lid']])) {
    $lidCount[$arr['lid']]++;
  } else {
    $lidCount[$arr['lid']] = 1;
  }

  if (isset($lnameCount [$arr['lname']])) {
    $lnameCount [$arr['lname']]++;
  } else {
    $lnameCount [$arr['lname']] = 1;
  }

}

答案 4 :(得分:0)

$array = array('192', '202', '192', '202');
print_r(array_count_values($array));

答案 5 :(得分:0)

$orders = array(
 array(
    'lid' => '',
    'lname' => '',

  ))....
$foundIds = array();
foreach ( $orders as $index => $order )
{
  if ( isset( $foundIds[$order['lid']] ) )
  {
    $orders[$index]['is_dupe'] = true;
    $orders[$foundIds[$order['lid']]]['is_dupe'] = true;
  } else {
    $orders[$index]['is_dupe'] = false;
  }
  $foundIds[$order['lid']] = $index;
}

答案 6 :(得分:0)

试试这段代码:

$array_count = array();
foreach ($array as $arr) :
    if (in_array($arr, $array_count)) {
        foreach ($array_count as $key => $count) :
            if ($key == $arr) {
                $array_count[$key]++;
                break;
            }
        endforeach;
    } else {
        $array_count[$arr] = 1;
    }
endforeach;

答案 7 :(得分:0)

使用in_array()功能检查。