количество повторяющихся элементов в массиве в php

Привет, Как найти количество повторяющихся элементов в 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 ) ) 

Как найти количество элементов?

т.е. количество записей с идентификатором 192 , 202 т. д.

Вы можете принять этот трюк; сопоставьте каждый элемент массива (который является самим массивом) с его соответствующим членом ['lid'] а затем используйте array_count_value() чтобы выполнить подсчет для вас.

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

Кроме того, это однострочный, что добавляет статус элитного хакера.

Обновить

Начиная с версии 5.5 вы можете сократить ее до:

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

Следующий код будет считать дубликат элемента массива. Пожалуйста, просмотрите его и попробуйте этот код.

  $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-duplicant-element-array-php-without-using-built-function/

Следующий код получит подсчеты для всех из них – что-то> 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; } } 
 $array = array('192', '202', '192', '202'); print_r(array_count_values($array)); 

Если вы можете обнаружить дубликат с lid чем

 foreach($yourarray as $val) $arResult[$val[lid]] += 1; 

а затем просто подсчет эхо значения, которое вы хотите, например

 echo $arResult[192]; 
 $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; } 

Попробуйте этот код:

 $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; 

Проверьте с помощью функции in_array() .