Values ​​не добавляет в массив динамически

В CodeIgniter я хочу добавить значения в массив из двух разных функций, но значения добавляются в массив только внутри первой функции. Подскажите, пожалуйста, в чем может быть проблема?

Код:

public $ChnCat_tags = array();
function first_function() {
    //some code 
    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    $recursion_result = second_function($ChnCat_tags);
    return $ChnCat_tags; //only returns values added inside first_function
}

function second_function($ChnCat_tags) {
    //some code
    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    recursion_result = second_function($ChnCat_tags);
    return recursion_result;
}

Ваш код не компилируется, re: recursion_result ... так что, вероятно, это ваша основная проблема ... как это вообще работает?

Alex 21.05.2018 07:16

@Alex, смотри сейчас.

Agha 21.05.2018 07:19

это все еще не полностью исправлено, но я понял.

Alex 21.05.2018 07:20

@Alex, ты можешь на это ответить?

Agha 21.05.2018 07:21

я немного запутался ... во второй функции вы снова запускаете себя (внутри себя), что приведет к бесконечному циклу. это ошибка?

Alex 21.05.2018 07:24

в реальном коде у меня есть базовый случай, который завершает рекурсию

Agha 21.05.2018 07:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
6
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что ж, вы могли бы просто начать везде использовать $this->ChnCat_tags вместо ChnCat_tags.

Или (пройти по ссылке):

function first_function() {
    //some code 
    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    second_function($ChnCat_tags);
    return $ChnCat_tags;
}

function second_function(&$ChnCat_tags) {
    //some code
    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    second_function($ChnCat_tags);
    // no need to return now
    //return recursion_result;
}

сделать как это

function first_function() {

    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );

    # Must call function with $this
    $recursion_result = $this->second_function($ChnCat_tags); 

    # print the value of $recursion_result whish hold entire data
    print_r($recursion_result); 
}

function second_function($ChnCat_tags) {

    $ChnCat_tags[] = array(
        'level' => $level,
        'value' => $row_vct->id_vct,
        'label' => $row_vct->displayname_vct,
        'disable' => $disb
    );
    # just return the array data.
    return $ChnCat_tags;
}

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