function count($array){
$counter=0;
foreach($array as $key=>$value){
if(is_array($value)){
count($value);
}else{
if(strcmp($value, "Hi") == 0){
$counter++;
}
}
}
}
$arrays = array("Hi", "a", "Hi", "b", "c", array("c", "Hi", array("Hi"), "d"));
如果我拨打count($arrays);
我想在这种情况下打印4
但我的代码保持打印0。
它似乎没有正确地返回“嗨”的反击,但我不知道。
答案 0 :(得分:3)
count()
是PHP的内置函数,如果更改名称,则更好:
function myRecursiveCount($array, $needle = "Hi"){
$counter=0;
foreach($array as $value){
if(is_array($value)){
$counter += myRecursiveCount($value);
} else if ($value === $needle){
$counter++;
}
}
return $counter;
}
$inputs = array("Hi", "a", "Hi", "b", "c", array("c", "Hi", array("Hi"), "d"));
echo myRecursiveCount($inputs); // Prints 4
您需要进行两次修改:
$counter
; $counter += f();
。我还应用了两项可选的改进:
$key
,因为您不需要它==
比较运算符(strcmp
感觉太旧了)在键盘上生活:http://codepad.org/ATiKV09d