Элементы подсчета в каждом вспомогательном массиве в php

Пример из php.net содержит следующие

<?php $food = array('fruits' => array('orange', 'banana', 'apple'), 'veggie' => array('carrot', 'collard', 'pea')); // recursive count echo count($food, COUNT_RECURSIVE); // output 8 // normal count echo count($food); // output 2 ?> 

Как я могу получить количество фруктов и число veggies независимо от $ food array (выход 3)?

Solutions Collecting From Web of "Элементы подсчета в каждом вспомогательном массиве в php"

Вы можете сделать это:

 echo count($food['fruits']); echo count($food['veggie']); 

Если вы хотите получить более общее решение, вы можете использовать цикл foreach:

 foreach ($food as $type => $list) { echo $type." has ".count($list). " elements\n"; } 

Вы можете использовать эту функцию, чтобы подсчитать значения непустого массива рекурсивно.

 function count_recursive($array) { if (!is_array($array)) { return 1; } $count = 0; foreach($array as $sub_array) { $count += count_recursive($sub_array); } return $count; } 

Пример:

 $array = Array(1,2,Array(3,4,Array(5,Array(Array(6))),Array(7)),Array(8,9)); var_dump(count_recursive($array)); // Outputs "int(9)" 

Просто вызовите count() на этих клавишах.

 count($food['fruit']); // 3 count($food['veggie']); // 3 

Не могли бы вы быть немного ленивыми, а не прожектором с бегущим счетом дважды и забрать родителей.

 // recursive count $all_nodes = count($food, COUNT_RECURSIVE); // output 8 // normal count $parent_nodes count($food); // output 2 echo $all_nodes - $parent_nodes; // output 6