В 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;
}
@Alex, смотри сейчас.
это все еще не полностью исправлено, но я понял.
@Alex, ты можешь на это ответить?
я немного запутался ... во второй функции вы снова запускаете себя (внутри себя), что приведет к бесконечному циклу. это ошибка?
в реальном коде у меня есть базовый случай, который завершает рекурсию






Что ж, вы могли бы просто начать везде использовать $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;
}
Ваш код не компилируется, re:
recursion_result... так что, вероятно, это ваша основная проблема ... как это вообще работает?