У меня есть массив, как показано ниже.
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);