Php 如何计算多维数组

Php 如何计算多维数组,php,arrays,Php,Arrays,上面的代码输出6,但我不明白为什么。有人能解释一下吗?如果您希望它返回5,那是因为第3个位置的数组被算作一个元素。如果希望它返回4,则第二个参数指定它是否应递归计数 $fruits = array("banana", "pineapple", array("apple", "mango"), "guava"); echo count($fruits,1); 因为正在将数组(“apple”、“mango”)计算为1个元素 $fruits = array("banana", "pineapple"

上面的代码输出6,但我不明白为什么。有人能解释一下吗?

如果您希望它返回5,那是因为第3个位置的数组被算作一个元素。如果希望它返回4,则第二个参数指定它是否应递归计数

$fruits = array("banana", "pineapple", array("apple", "mango"), "guava");
echo count($fruits,1);
因为正在将
数组(“apple”、“mango”)
计算为1个元素

$fruits = array("banana", "pineapple", array("apple", "mango"), "guava");
array(“apple”、“mango”)
计数为3,因为您正在进行深度计数

它首先计算“香蕉”、“菠萝”、“数组()”和“番石榴”
然后是“苹果”和“芒果”

如果您只想计算叶节点,您可以利用这样一个事实,即
array\u walk\u recursive
只涉及这些节点

count($fruits,1)// the second parameter will recursively count the array

+ 1 -> banana
+ 1 -> pineapple
+ 1 -> array("apple","mango")
+ 1 --------> apple
+ 1 --------> mango
+ 1 -> guava
____
 6 elements
希望这会有所帮助

array_walk_recursive($fruits, function() use (&$count) { $count++; });
echo $count;  // 5
$fruits=array(“香蕉”、“菠萝”、array(“苹果”、“芒果”)、“番石榴”);
foreach($key=>$value)
{
回声计数($value)。“
”; } //产出:1 2 1
4为第一级,2为第二级。。数组也是一个elem..Upvote,因为这是我第一次意识到
count()
可以接受第二个参数。@MonkeyZeus这里也是一样的!尽管我认为如果递归计数不包括内部数组,它会更有用。也许我忽略了其中的一些价值。@Don't我也在处理这个想法,但我认为这很好地解释了这一点。谢谢。明白:)谢谢。明白:)
$fruits = array("banana", "pineapple", array("apple", "mango"), "guava");

foreach ($fruits as $key => $value)
{
   echo count($value) . "<br />";
}

// Output : 1 1 2 1