@xGreen_Max

Распаковка массива, когда ее нет?

По идее, когда перебираешь массив нужно его распаковать циклом foreach.
Но в строке, которую я пометил комментом нет распаковки,
выводится все на экран, как будто распаковка произошла.

И как вывести результат этой функции вне ее?
Ведь выводить результаты внутри функции это плохо.
$str = [1,2,3, [3,5, [6,7] ]  ];

function xo($array){

if(is_array($array)){
foreach($array as $items){
xo($items);
}}

else{
echo  $array;   // почему здесь работает все без распаковки цикла foreach($array as $items)?
}};

array_map('xo', $str);
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
@rPman
array_map('xo', $str);
array_map вызывает функцию xo для каждого элемента массива $str

сама функция xo рекурсивно вызывает себя же для элементов, являющихся массивом, и выводит этот элемент если это не так (вывод в том месте что указан в вопросе, т.е. на этом этапе уже нет массива и выводится конечный элемент)

благодаря этому происходит 'распаковка'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы