php - How to fill an array with a function, and use that array outside the function? -
i'am working in codeigniter (ci), , trying create nested set of category items dropdown list. create dropdown box, in ci need echo form_dropdown('name', $array, $selectedid).
here function create nested list array:
$categorydata = array(); function list_categories($cats, $sub = ''){ foreach($cats $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); } } } if var_dump($categorydata); right after foreach inside list_categories() function, return array of nested sets. ok when using var_dump() inside function. need this:
<?php list_categories($categories); var_dump($categorydata); ?> and here empty array, here output:
array (size=0) empty could tell me i'am doing wrong here ?
your function modifies local copy, should returned global scope. want achieve might done globals ("bad practice"), return or references.
try use references:
function list_categories(&$result, $cats, $sub = ''){ // <- foreach($cats $cat){ //$cat['category']->id = $sub.$cat['category']->title; $result[$cat['category']->id] = $sub.$cat['category']->title; // <- if( sizeof($cat['children']) > 0 ){ $sub2 = str_replace('—→ ', '–', $sub); $sub2.= '–→ '; list_categories($result, $cat['children'], $sub2); // <- } } } $categorydata = array(); list_categories($categorydata, $categories); // <- upd: in end, recusive function, references better (as me). sorry inconvinience.
Comments
Post a Comment