@xGreen_Max

Функция вызывает сама себя?

Есть несколько переменных(6) разных типов, я их всех решил вывести циклом на экран.
Но меня интересует строка, которую я пометил комментом.
Что она именно делает?
Цикл будет применять условие is array ко всем элементам массива?
И если внутри общего массива окажется еще один массив в моём случае это "$d",
то выполнится filter($items) верно?

Но что делает этот самый filter($items)?
Я не совсем понимаю, что происходит дальше с этим filter($items).

$a = 1;
$b = 1.2;
$c = "xopa";
$d = [32,12];
$e = true;
$f = null;
 
 
 
function filter($massive) {
 
foreach($massive as $items){
 
if (is_array($items)){
filter($items);                       // интересует эта строка,  что она делает?
}
 
 
else {
echo $items . "<br>";
}}
 
 
}
 
filter([$a, $b, $c, $d, $e, $f]);
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 3
Adamos
@Adamos
Это называется - рекурсия. Выполняется та же самая функция, с самой первой строчки, только аргументом к ней будет внутренний массив. Так что она выведет те два числа - 32 и 12 через отбивку и закончит работу, вернувшись в вызвавшую функцию.
Для человеческого понимания представьте, что на месте рекурсивного вывода на распечатку еще раз положили распечатку той же функции. И если надо - можно накладывать сверху еще сколько угодно листов с такими распечатками. А когда их текст заканчивается - снимать, возвращаясь на то же самое место, откуда был вызов.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ответ написан
Комментировать
Kolyagrozamorey
@Kolyagrozamorey
инженер-электроник службы ИТ ХАЕС
Выводит все элементы масива строкой притом каждый с новой строке
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы