Как PHP считает объекты в многомерных массивах? - PullRequest
1 голос
/ 12 октября 2019

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

Я прочитал, как работает функция count в руководстве по PHP, и я знаю, что второй параметр в функции означает, что он будет рекурсивно считать массив.

<?php
$fruits = array ("apple", "orange", array("pear" , "mango"), "banana");
echo (count($fruits,1));

Таким образом, результат без 1 в качестве второго параметра должен быть 4, а с ним должно быть 5, но я получаю 6 в качестве вывода.

1 Ответ

0 голосов
/ 12 октября 2019
$fruits = array("apple", "orange", array(), array("pear", "mango"), "banana");
echo (count($fruits, 1));

Ответ прост. Вывод этого кода - 7.

1) apple
2) orange  
3) array() 
4) array() 
5) pear 
6) mongo 
7) banana

Если я хочу объяснить это точно и просто:

<?php
$arr = ['a', 'b', array('c', 'd')];
$cnt = count($arr);
foreach($arr as $item) {
    if(is_array($item)) {
        $cnt += count($item);
    }
}
echo $cnt;
...