Я работаю в CodeIgniter (CI) и пытается создать вложенный набор элементов категории для выпадающего списка. Чтобы создать раскрывающийся список, в CI вам нужно echo form_dropdown('name', $array, $selectedID)
.Как заполнить массив функцией и использовать этот массив вне функции?
Вот моя функция, чтобы создать вложенный список массив:
$categoryData = array();
function list_categories($cats, $sub = ''){
foreach($cats as $cat){
//$cat['category']->id = $sub.$cat['category']->title;
$categoryData[$cat['category']->id] = $sub.$cat['category']->title;
if(sizeof($cat['children']) > 0){
$sub2 = str_replace('—→ ', '–', $sub);
$sub2.= '–→ ';
list_categories($cat['children'], $sub2);
}
}
}
Если я буду делать var_dump($categoryData);
только сразу после foreach
внутри функции list_categories()
, он возвращает массив вложенных множеств. Так что это нормально при использовании var_dump()
внутри функции. Но мне нужно сделать это:
<?php
list_categories($categories);
var_dump($categoryData);
?>
И вот я получаю пустой массив, вот выход:
array (size=0)
empty
Может кто-нибудь сказать мне, что I'am здесь делаю неправильно?
Ваша функция ничего не возвращает. Поместите '$ categoryData = array();' в первую строку функции и добавьте 'return $ categoryData' в конце функции. Кроме того, вы не назначаете 'list_categories()' никому, когда вы его вызываете: '$ categoryData = list_categories ($ categories);' – billyonecan
Даже если я делаю в конце функции 'return $ categoryData;', она все равно быть пустым, где я делаю 'var_dump()'. Ты знаешь почему ? – aspirinemaga
@aspirinemaga, обновлено. Пожалуйста примите к сведению. – BlitZ