Пример из 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)?
Вы можете сделать это:
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