Подсчет появления определенного значения в массиве с помощью PHP

Я пытаюсь найти встроенную функцию PHP, которая позволит мне подсчитать количество вхождений определенного значения в массиве. Я знаком с функцией array_count_values ​​(), но возвращает количество всех значений в массиве. Есть функция, которая позволяет вам передать значение и просто вернуть счетчик экземпляров для этого конкретного значения? Например:

$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7); $instances = some_native_function(6, $array); //$instances will be equal to 4 

Я знаю, как создать свою собственную функцию, но зачем изобретать колесо?

 function array_count_values_of($value, $array) { $counts = array_count_values($array); return $counts[$value]; } 

Не родной , но давай, это достаточно просто. 😉

В качестве альтернативы:

 echo count(array_filter($array, function ($n) { return $n == 6; })); 

Или:

 echo array_reduce($array, function ($v, $n) { return $v + ($n == 6); }, 0); 

Или:

 echo count(array_keys($array, 6)); 

Это решение может быть рядом с вашим требованием

 $array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7); print_r(array_count_values($array)); Result: Array ( [1] => 1 ,[2] => 1 , [3] => 3, [4] => 2,[5] =>1, [6] => 4, [7] => 1 ) 

для деталей .

Начиная с PHP 5.4.0, вы можете использовать разыменование функционального массива для индекса [6] массива, полученного из array_count_values() :

 $instances = array_count_values($array)[6]; //$instances will be equal to 4 

Предположим, что мы имеем следующий массив:

  $stockonhand = array( "large green", "small blue", "xlarge brown", "large green", "medieum yellow", "xlarge brown", "large green"); 

1) Скопируйте и вставьте эту функцию один раз поверх своей страницы.

  function arraycount($array, $value){ $counter = 0; foreach($array as $thisvalue) /*go through every value in the array*/ { if($thisvalue === $value){ /*if this one value of the array is equal to the value we are checking*/ $counter++; /*increase the count by 1*/ } } return $counter; } 

2) Все, что вам нужно сделать дальше, – это применять функцию каждый раз, когда вы хотите подсчитать какое-либо конкретное значение в любом массиве. Например:

  echo arraycount($stockonhand, "large green"); /*will return 3*/ echo arraycount($stockonhand, "xlarge brown"); /*will return 2*/ 

Скажем, у меня есть массив вроде этого:

 $array = array('', '', 'other', '', 'other'); $counter = 0; foreach($array as $value) { if($value === '') $counter++; } echo $counter; 

Это дает количество повторений в массиве