return возвращает NULL

165
27 декабря 2017, 21:40

Почему функция возвращает NULL? Если сделать дамп в функции перед словом return тогда выводится ожидаемый масив, при дампе функции tree_menu() - NULL.

<? 
function tree_menu($menu, $parent = 0){
    static $key_1 = 0;
    static $key_2 = 0;
    static $key_3 = 0;
    static $key_4 = 0;
    static $arResult;
    switch($menu[$parent]['DEPTH_LEVEL']) {
        case 1:
            $key_1++; 
            $arResult[$key_1]=$menu[$parent];
        break;
        case 2:
            $key_2++;
            $arResult[$key_1]['CHILDRENS'][$key_2]=$menu[$parent];
        break;
        case 3:
            $key_3++;
            $arResult[$key_1]['CHILDRENS'][$key_2]['CHILDRENS'][$key_3]=$menu[$parent];
        break;
        case 4:
            $key_4++;
            $arResult[$key_1]['CHILDRENS'][$key_2]['CHILDRENS'][$key_3]['CHILDRENS'][$key_4]=$menu[$parent];
        break;
    }
    $parent++;
    if(empty($menu[$parent])){
        return $arResult;
    }else{
        tree_menu($menu,$parent);
    }
}
$a = tree_menu($arResult);
var_dump($a);
?>
Answer 1

Потому что возврат из функции перед var_dump() происходит...

if(empty($menu[$parent])){
    return $arResult;
}else{
    tree_menu($menu,$parent); // <--- ... вот ТУТ
}

Вы в этой строке забыли return, а функции PHP без return возвращают по-умолчанию null

READ ALSO
Поиск объекта в массиве

Поиск объекта в массиве

Доброго времени суток, форумчане! У меня возникла проблема, у меня есть вот такой JSON файл:

148
Записать значение переменной один раз

Записать значение переменной один раз

Как записать значение переменной в сессию/куки только 1 раз без перезаписи? Обновляется страница 3 раза и прилетают 3 разных значения в cookie

162
Функция для работы с массивами PHP

Функция для работы с массивами PHP

какой функцией для работы с массивами можно заменить foreach в таком коде

155