我试图找出一种计算多维数组中出现次数的方法.该数组如下所示:
$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.任何帮助?
谢谢.
发生这种情况是因为您的数组$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)