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. Кажется, он не возвращает счетчик "Привет" правильно, но я понятия не имею.
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
$counter += count($value);
должно быть$counter += myRecursiveCount($value);
?