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('&mdash;&rarr;&nbsp;', '&ndash;', $sub);             $sub2.= '&ndash;&rarr;&nbsp;';              list_categories($result, $cat['children'], $sub2); // <-         }     } }  $categorydata = array();  list_categories($categorydata, $categories); // <- 

upd: in end, recusive function, references better (as me). sorry inconvinience.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -