Самозвонящий массив return php - PullRequest
0 голосов
/ 23 января 2020

Я пишу модуль, который сортирует по категориям и возвращает мне самую низкую из возможных подкатегорий.

private function getChild($array){
    foreach($array as $item){
        if(is_array($item)){
            $this->getChild($item);
        } else {
            array_push($this->catsToReturn, $item);
        }
    }
}

Итак, моя актуальная проблема и вопрос: почему я не могу вернуть значение в другом корпусе? Я хотел бы вернуть $ item и pu sh это значение в массив, что дало бы мне лучшую читаемость кода, так как теперь у меня

$this->getChild($this->postCategories);

Висит случайно в моем коде.

Странно и ново для меня то, что я могу отобразить значение, но не могу его вернуть, я знаю, что это проблема с областью действия, но не могу найти информацию о том, как ее решить.

Просто хотел узнать, как это улучшить.

Ура

1 Ответ

0 голосов
/ 23 января 2020

Вы можете изменить свой код, добавив $item в массив и выполнив array_merge для получения результатов от последующих вызовов.

<?php

private function getChild($array){
    $result = [];
    foreach($array as $item){
        if(is_array($item)){
            $result = array_merge($result,$this->getChild($item));
        } else {
            $result[] = $item;
        }
    }

    return $result;
}

Откуда бы вы не звонили ваш класс, вы можете просто сделать

$this->catsToReturn = $this->getChild($array)
...