9

嗨,我们如何找到 a 中重复元素的数量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
        )

)

如何找到每个元素的计数?

即,具有 id 的条目192202

4

8 回答 8

22

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

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

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

更新

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

array_count_values(array_column($arr, 'lid'));
于 2012-11-16T09:20:33.113 回答
2
foreach ($array as $value) 
{
    $numbers[$value[lid]]++;
}
foreach ($numbers as $key => $value) 
{
    echo 'numbers of '.$key.' equal '.$value.'<br/>';
}
于 2012-11-16T09:17:59.563 回答
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);

输出:
数组([绿色] => 3 [红色] => 2 [黄色] => 2)

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

于 2016-05-26T12:32:05.360 回答
0

以下代码将获取所有这些的计数 - 最后任何 > 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;
  }

}
于 2012-11-16T09:16:32.720 回答
0
$array = array('192', '202', '192', '202');
print_r(array_count_values($array));
于 2012-11-16T09:17:02.003 回答
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;
}
于 2012-11-16T09:21:37.837 回答
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;
于 2012-11-16T09:34:56.853 回答
0

检查in_array()功能。

于 2012-11-16T09:35:38.677 回答