计算多维数组中的出现次数

Par*_*ash -2 php

我试图找出一种计算多维数组中出现次数的方法.该数组如下所示:

$arr = [
  "apple",
  ["banana", "strawberry", "apple"],
  ["banana", "strawberry", "apple", ["banana", "strawberry", "apple"]]
];
Run Code Online (Sandbox Code Playgroud)

我得到的代码是这样的:

$count = 0;
    foreach ($arr as $arritem) {
      if ($arritem === "apple") {
        $count++;
      }
 }
 echo $count;
Run Code Online (Sandbox Code Playgroud)

当我搜索"Apple"时,我得到q的输出.不知道我在这里做错了什么.我需要输出为4.任何帮助?

谢谢.

d3L*_*d3L 6

发生这种情况是因为您的数组$arr包含字符串(apple)和数组:

$arr = [
  "apple",
  ["banana", "strawberry", "apple"],
  ["banana", "strawberry", "apple", ["banana", "strawberry", "apple"]]
];

$count = 0;

foreach ($arr as $arritem) {
    // first iteration: $arritem is "apple"
    // second iteration: $arritem is ["banana", ...]
    // third iteration: $arritem is ["banana", ...]
    if ($arritem === "apple") {
        $count++;
    }
}

echo $count;
Run Code Online (Sandbox Code Playgroud)

$arritem === "apple"仅适用于数组中的一个元素,因此输出1.

怎么修 ?使用array_walk_recursive递归走阵列(S):

$count = 0;

array_walk_recursive($arr, function($item) use (&$count) {
    if ($item === "apple") ++$count;
});

echo $count; // outputs 4
Run Code Online (Sandbox Code Playgroud)