Intereting Posts
Как поместить строку в массив, разделить на новую строку? Предупреждение: mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, boolean given Почему я получаю ошибку: неопределенная переменная? Что такое эквивалент PHP статической переменной на других языках? Отправка правильного типа содержимого JSON для CakePHP Каков стандартный способ управления несколькими аналогичными входами в форме HTML / PHP? Передать переменную Javascript в PHP через ajax Обработка ошибок с помощью PHPMailer Дата регистрации PHP Неустранимая ошибка: вызов функции-члена функции find () для не-объекта, однако моя функция работает Лучший способ использовать PHP для шифрования и дешифрования паролей? подготовленный параметризованный запрос с PDO все равно, чтобы определить публичные или частные или защищенные классы в PHP Где я могу сохранить частичные (представления) в Zend Framework, чтобы быть доступным для всех представлений в моем приложении? Render React Components из PHP

как подсчитать количество элементов в php-ассоциативном массиве

У меня есть массив, как показано ниже.

Array ( [0] => Array ( [item] => Banana Cream Cheesecake [item_id] => 3 [product] => Desserts ) [1] => Array ( [item] => Banana Cream Cheesecake [item_id] => 3 [product] => Desserts ) [2] => Array ( [item] => Banana Cream Cheesecake [item_id] => 3 [product] => Desserts ) [3] => Array ( [item] => Banana Cream Cheesecake [item_id] => 3 [product] => Desserts ) [4] => Array ( [item] => Milk [item_id] => 2 [product] => Soda ) [5] => Array ( [item] => Banana Cream Cheesecake [item_id] => 3 [product] => Desserts ) ) 

Я хочу напечатать: –

 Banana Cream Cheesecake = 5 

как это сделать?

 $count = 0; foreach ($array as $key=>$value) { if ($value ['item'] == 'Banana Cream Cheesecake') { $count++; } } echo $count; 
 array_count_values(array_map(function($foo){return $foo['item'];}, $arr)); 

Учитывая такой массив:

 $arr = array(array('item' => 'Banana Cream Cheesecake', 'item_id' => 3, 'product' => 'Desserts'), array('item' => 'Banana Cream Cheesecake', 'item_id' => 3, 'product' => 'Desserts'), array('item' => 'Banana Cream Cheesecake', 'item_id' => 3, 'product' => 'Desserts'), array('item' => 'Banana Cream Cheesecake', 'item_id' => 3, 'product' => 'Desserts'), array('item' => 'Milk', 'item_id' => 2, 'product' => 'Soda'), array('item' => 'Banana Cream Cheesecake', 'item_id' => 3, 'product' => 'Desserts')); 

Вы можете использовать array_count_values и получить счет по его имени

 $counted = array_count_values(array_map(function($value){return $value['item'];}, $arr)); echo $counted['Banana Cream Cheesecake']; 

Или измените функцию для работы с идентификатором элемента:

 $counted = array_count_values(array_map(function($value){return $value['item_id'];}, $arr)); // The item_id echo $counted['3']; 

Расширение ответа @ steve

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

Это дает вам массив с итогом каждого значения для клавиши ['item'] .

Например, это массив, возвращаемый вашим примером:

 $counted = Array ( ['Banana Cream Cheesecake'] => 5 ['Milk'] => 1 ) 

Затем, чтобы напечатать это просто вопрос эха этой переменной:

 echo 'Banana Cream Cheesecake = ' . $counted['Banana Cream Cheesecake']; //prints "Banana Cream Cheesecake = 5" 

Преимущество здесь в том, что вам не нужно запускать цикл for для каждого значения, которое вам нужно подсчитать – вместо этого у вас есть массив с итоговыми значениями для всех значений для этого конкретного ключа.

print_r массив и подсчет количества вхождений вашего торта.

Нет, серьезно, без дополнительной информации это решение;)

 $iCount = substr_count(print_r($array, true), "cheese cake"); 

Возникает проблема при работе с номерами только строк, из-за того, что substr_count принимает также ключи, поэтому я использовал простой счет вместо substr_count и работал нормально.

 $icount=count(print_r($_SESSION['id_bra'], true), $bran);