Создание экземпляра пары клавишных клавиш PHP без массива

StackOverflow https://stackoverflow.com/questions/1795741

Вопрос

Я пишу рекурсивную функцию для построения многомерного массива. По сути, проблема заключается в следующем:

function build($term){      
    $children = array();

    foreach ( $term->children() as $child ) {
        $children[] = build($child);
    }

    if(!count($children)){
        return $term->text();
    } else {
        return $term->text() => $children; //obviously, this doesn't work           
    }
}

Мысли? Я знаю, что мог бы переписать структуру функции, чтобы она работала, но кажется, что это должно быть ненужным.

Это было полезно?

Решение

Массив является единственным, что может предложить PHP PHP PARE PARE. Таким образом, вы должны использовать массив, если вы хотите, чтобы ваша функция (возможно, она рекурсивна или нет), чтобы вернуть пару ключевых значений.

return array($term->text() => $children);

Другие советы

function build($term){          
    $children = array();

    foreach ( $term->children() as $child ) {
        $children += build($child);
    }

    if(!count($children)){
        return $term->text();
    } else {
        return array($term->text() => $children); //obviously, this doesn't work               
    }
}

Из того, что я понимаю по вопросу, это то, как он должен выглядеть.

Добавление рекурсии и возвращение массива.

РЕДАКТИРОВАТЬ: Помимо, если вам может быть лучше вернуть массив, даже если Count ($ kdens) == 0, это сделает все ваши типы встроить. иначе вы можете получить все виды ошибок в будущем:

if(!count($children)){
            return array($term->text() => null);

Вы можете вернуть его так:

return array($term->text() => $children);

Хотя это не то, что вы просили. Я думаю, что вы не можете сделать это, не переписывая части вашей функции, так или иначе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top