PHP: How to cast a "non-array" -
i'm building array of nested categories. did key roots need for, problem not array expected. maybe code explain mean:
$new_subcat = null; // explode subcategory field retrieve tree $new_subcategories = explode($separator, $subcategory_name); // each element in tree, search in results // array , if not found, create new category , // update results array ($i = 0; $i < count($new_subcategories); $i++) { $new_subcategories[$i] = ucwords(strtolower(trim($new_subcategories[$i]))); if (($new_subcat = $this->checkcategory($cat_array, is_null($new_subcat) ? $id_parent : $new_subcat->id, $new_subcategories[$i], $max_cat_id, $new_category_counter)) === false) continue; $layers = $category_name.'][subcategories]'; ($j = 0; $j <= $i; $j++) { $layers .= '['.$new_subcategories[$j].']'; if ($j < $i) $layers .= '[subcategories]'; } $layers .= '[id'; $results{$layers} = $new_subcat->id; } this print_r($results);
array ( [cartoleria] => array ( [id] => 13 ) [cartoleria][subcategories][accessori][id] => 14 [cartoleria][subcategories][accessori][subcategories][scuola][id] => 15 [cartoleria][subcategories][accessori][subcategories][scuola][subcategories][disegno][id] => 16 [cartoleria][subcategories][accessori][subcategories][scuola][subcategories][scrittura][id] => 17 [cartoleria][subcategories][blocchi e quaderni][id] => 18 [cartoleria][subcategories][buste e cartelle][id] => 19 [cartoleria][subcategories][buste e cartelle][subcategories][buste][id] => 20 [cartoleria][subcategories][buste e cartelle][subcategories][cartelle morbide][id] => 21 [cartoleria][subcategories][buste e cartelle][subcategories][cartelle rigide][id] => 22 [cartoleria][subcategories][buste e cartelle][subcategories][raccoglitori][id] => 23 [cartoleria][subcategories][carta][id] => 24 [cartoleria][subcategories][carta][subcategories][risme e confezioni][id] => 25 [cartoleria][subcategories][etichette adesive][id] => 26 [cartoleria][subcategories][lapis e matite][id] => 27 [cartoleria][subcategories][lapis e matite][subcategories][lapis][id] => 28 [cartoleria][subcategories][lapis e matite][subcategories][matite][id] => 29 [cartoleria][subcategories][nastri adesivi e colle][id] => 30 [cartoleria][subcategories][penne e pennarelli][id] => 31 [cartoleria][subcategories][penne e pennarelli][subcategories][evidenziatori][id] => 32 [cartoleria][subcategories][penne e pennarelli][subcategories][pennarelli][id] => 33 [cartoleria][subcategories][penne e pennarelli][subcategories][penne][id] => 34 [informatica] => array ( [id] => 35 ) [informatica][subcategories][accessori][id] => 36 [informatica][subcategories][accessori][subcategories][alimentatori e ups][id] => 37 [informatica][subcategories][accessori][subcategories][batterie e pile][id] => 38 [informatica][subcategories][accessori][subcategories][box, docking station e adattatori][id] => 39 [informatica][subcategories][accessori][subcategories][casse audio][id] => 40 [informatica][subcategories][accessori][subcategories][cavi][id] => 41 [informatica][subcategories][accessori][subcategories][cavi][subcategories][alimentazione][id] => 42 [informatica][subcategories][accessori][subcategories][cavi][subcategories][monitor][id] => 43 [informatica][subcategories][accessori][subcategories][cavi][subcategories][prolunghe e multiprese][id] => 44 [informatica][subcategories][accessori][subcategories][cavi][subcategories][rete][id] => 45 [informatica][subcategories][accessori][subcategories][cavi][subcategories][usb][id] => 46 [informatica][subcategories][accessori][subcategories][cuffie, microfoni e web cam][id] => 47 [informatica][subcategories][accessori][subcategories][hub e switch][id] => 48 [informatica][subcategories][accessori][subcategories][mouse e tastiere][id] => 49 [informatica][subcategories][accessori][subcategories][mouse e tastiere][subcategories][kit][id] => 50 [informatica][subcategories][accessori][subcategories][mouse e tastiere][subcategories][mouse][id] => 51 [informatica][subcategories][accessori][subcategories][mouse e tastiere][subcategories][tastiere][id] => 52 [informatica][subcategories][accessori][subcategories][mouse pad][id] => 53 [informatica][subcategories][accessori][subcategories][notebook][id] => 54 [informatica][subcategories][accessori][subcategories][notebook][subcategories][basi raffreddanti][id] => 55 [informatica][subcategories][accessori][subcategories][periferiche di rete][id] => 56 [informatica][subcategories][accessori][subcategories][pulizia e manutenzione][id] => 57 [informatica][subcategories][accessori][subcategories][supporti di memoria][id] => 58 [informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][accessori][id] => 59 [informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][accessori][subcategories][buste e custodie][id] => 60 [informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][dischi esterni][id] => 61 [informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][pennette usb][id] => 62 [informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][supporti ottici][id] => 63 [informatica][subcategories][componenti][id] => 64 [informatica][subcategories][componenti][subcategories][alimentatori][id] => 65 [informatica][subcategories][componenti][subcategories][batterie][id] => 66 [informatica][subcategories][componenti][subcategories][case][id] => 67 [informatica][subcategories][componenti][subcategories][cpu][id] => 68 [informatica][subcategories][componenti][subcategories][hard disc][id] => 69 [informatica][subcategories][componenti][subcategories][lettori e masterizzatori][id] => 70 [informatica][subcategories][componenti][subcategories][memorie][id] => 71 [informatica][subcategories][componenti][subcategories][memorie][subcategories][pc desktop][id] => 72 [informatica][subcategories][componenti][subcategories][schede madri][id] => 73 [informatica][subcategories][computer][id] => 74 [informatica][subcategories][computer][subcategories][notebook][id] => 75 [informatica][subcategories][monitor][id] => 76 [informatica][subcategories][software][id] => 77 [informatica][subcategories][software][subcategories][antivirus][id] => 78 [informatica][subcategories][software][subcategories][sistemi operativi][id] => 79 [informatica][subcategories][stampanti][id] => 80 [informatica][subcategories][stampanti][subcategories][accessori][id] => 81 [informatica][subcategories][stampanti][subcategories][accessori][subcategories][cartucce e toner][id] => 82 [informatica][subcategories][stampanti][subcategories][accessori][subcategories][cartucce e toner][subcategories][cartucce][id] => 83 [informatica][subcategories][stampanti][subcategories][accessori][subcategories][cartucce e toner][subcategories][toner][id] => 84 [telefonia] => array ( [id] => 85 ) [telefonia][subcategories][accessori][id] => 86 [telefonia][subcategories][accessori][subcategories][cavi e adattatori][id] => 87 [telefonia][subcategories][accessori][subcategories][cuffie e microfoni][id] => 88 [telefonia][subcategories][accessori][subcategories][custodie e cover][id] => 89 [telefonia][subcategories][accessori][subcategories][custodie e cover][subcategories][tablet][id] => 90 [telefonia][subcategories][accessori][subcategories][memorie esterne][id] => 91 [tv] => array ( [id] => 92 ) [tv][subcategories][accessori][id] => 93 [tv][subcategories][accessori][subcategories][tv][id] => 94 ) of course main categories putted in array before code i'm showing here. seems php consider {$layers} string , single key without caring of square brackets.
how can modify above code real array of arrays?
thanks lot.
[edit]
@halcyon here var_dump:
array(82) { ["cartoleria"]=> array(1) { ["id"]=> string(2) "13" } ["cartoleria][subcategories][accessori][id"]=> int(14) ["cartoleria][subcategories][accessori][subcategories][scuola][id"]=> int(15) ["cartoleria][subcategories][accessori][subcategories][scuola][subcategories][disegno][id"]=> string(2) "16" ["cartoleria][subcategories][accessori][subcategories][scuola][subcategories][scrittura][id"]=> string(2) "17" ["cartoleria][subcategories][blocchi e quaderni][id"]=> string(2) "18" ["cartoleria][subcategories][buste e cartelle][id"]=> int(19) ["cartoleria][subcategories][buste e cartelle][subcategories][buste][id"]=> string(2) "20" ["cartoleria][subcategories][buste e cartelle][subcategories][cartelle morbide][id"]=> string(2) "21" ["cartoleria][subcategories][buste e cartelle][subcategories][cartelle rigide][id"]=> string(2) "22" ["cartoleria][subcategories][buste e cartelle][subcategories][raccoglitori][id"]=> string(2) "23" ["cartoleria][subcategories][carta][id"]=> string(2) "24" ["cartoleria][subcategories][carta][subcategories][risme e confezioni][id"]=> string(2) "25" ["cartoleria][subcategories][etichette adesive][id"]=> string(2) "26" ["cartoleria][subcategories][lapis e matite][id"]=> int(27) ["cartoleria][subcategories][lapis e matite][subcategories][lapis][id"]=> string(2) "28" ["cartoleria][subcategories][lapis e matite][subcategories][matite][id"]=> string(2) "29" ["cartoleria][subcategories][nastri adesivi e colle][id"]=> string(2) "30" ["cartoleria][subcategories][penne e pennarelli][id"]=> int(31) ["cartoleria][subcategories][penne e pennarelli][subcategories][evidenziatori][id"]=> string(2) "32" ["cartoleria][subcategories][penne e pennarelli][subcategories][pennarelli][id"]=> string(2) "33" ["cartoleria][subcategories][penne e pennarelli][subcategories][penne][id"]=> string(2) "34" ["informatica"]=> array(1) { ["id"]=> string(2) "35" } ["informatica][subcategories][accessori][id"]=> int(36) ["informatica][subcategories][accessori][subcategories][alimentatori e ups][id"]=> string(2) "37" ["informatica][subcategories][accessori][subcategories][batterie e pile][id"]=> string(2) "38" ["informatica][subcategories][accessori][subcategories][box, docking station e adattatori][id"]=> string(2) "39" ["informatica][subcategories][accessori][subcategories][casse audio][id"]=> string(2) "40" ["informatica][subcategories][accessori][subcategories][cavi][id"]=> int(41) ["informatica][subcategories][accessori][subcategories][cavi][subcategories][alimentazione][id"]=> string(2) "42" ["informatica][subcategories][accessori][subcategories][cavi][subcategories][monitor][id"]=> string(2) "43" ["informatica][subcategories][accessori][subcategories][cavi][subcategories][prolunghe e multiprese][id"]=> string(2) "44" ["informatica][subcategories][accessori][subcategories][cavi][subcategories][rete][id"]=> string(2) "45" ["informatica][subcategories][accessori][subcategories][cavi][subcategories][usb][id"]=> string(2) "46" ["informatica][subcategories][accessori][subcategories][cuffie, microfoni e web cam][id"]=> string(2) "47" ["informatica][subcategories][accessori][subcategories][hub e switch][id"]=> string(2) "48" ["informatica][subcategories][accessori][subcategories][mouse e tastiere][id"]=> int(49) ["informatica][subcategories][accessori][subcategories][mouse e tastiere][subcategories][kit][id"]=> string(2) "50" ["informatica][subcategories][accessori][subcategories][mouse e tastiere][subcategories][mouse][id"]=> string(2) "51" ["informatica][subcategories][accessori][subcategories][mouse e tastiere][subcategories][tastiere][id"]=> string(2) "52" ["informatica][subcategories][accessori][subcategories][mouse pad][id"]=> string(2) "53" ["informatica][subcategories][accessori][subcategories][notebook][id"]=> string(2) "54" ["informatica][subcategories][accessori][subcategories][notebook][subcategories][basi raffreddanti][id"]=> string(2) "55" ["informatica][subcategories][accessori][subcategories][periferiche di rete][id"]=> string(2) "56" ["informatica][subcategories][accessori][subcategories][pulizia e manutenzione][id"]=> string(2) "57" ["informatica][subcategories][accessori][subcategories][supporti di memoria][id"]=> int(58) ["informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][accessori][id"]=> string(2) "59" ["informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][accessori][subcategories][buste e custodie][id"]=> string(2) "60" ["informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][dischi esterni][id"]=> string(2) "61" ["informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][pennette usb][id"]=> string(2) "62" ["informatica][subcategories][accessori][subcategories][supporti di memoria][subcategories][supporti ottici][id"]=> string(2) "63" ["informatica][subcategories][componenti][id"]=> int(64) ["informatica][subcategories][componenti][subcategories][alimentatori][id"]=> string(2) "65" ["informatica][subcategories][componenti][subcategories][batterie][id"]=> string(2) "66" ["informatica][subcategories][componenti][subcategories][case][id"]=> string(2) "67" ["informatica][subcategories][componenti][subcategories][cpu][id"]=> string(2) "68" ["informatica][subcategories][componenti][subcategories][hard disc][id"]=> string(2) "69" ["informatica][subcategories][componenti][subcategories][lettori e masterizzatori][id"]=> string(2) "70" ["informatica][subcategories][componenti][subcategories][memorie][id"]=> string(2) "71" ["informatica][subcategories][componenti][subcategories][memorie][subcategories][pc desktop][id"]=> string(2) "72" ["informatica][subcategories][componenti][subcategories][schede madri][id"]=> string(2) "73" ["informatica][subcategories][computer][id"]=> string(2) "74" ["informatica][subcategories][computer][subcategories][notebook][id"]=> string(2) "75" ["informatica][subcategories][monitor][id"]=> string(2) "76" ["informatica][subcategories][software][id"]=> int(77) ["informatica][subcategories][software][subcategories][antivirus][id"]=> string(2) "78" ["informatica][subcategories][software][subcategories][sistemi operativi][id"]=> string(2) "79" ["informatica][subcategories][stampanti][id"]=> int(80) ["informatica][subcategories][stampanti][subcategories][accessori][id"]=> int(81) ["informatica][subcategories][stampanti][subcategories][accessori][subcategories][cartucce e toner][id"]=> int(82) ["informatica][subcategories][stampanti][subcategories][accessori][subcategories][cartucce e toner][subcategories][cartucce][id"]=> string(2) "83" ["informatica][subcategories][stampanti][subcategories][accessori][subcategories][cartucce e toner][subcategories][toner][id"]=> string(2) "84" ["telefonia"]=> array(1) { ["id"]=> string(2) "85" } ["telefonia][subcategories][accessori][id"]=> int(86) ["telefonia][subcategories][accessori][subcategories][cavi e adattatori][id"]=> string(2) "87" ["telefonia][subcategories][accessori][subcategories][cuffie e microfoni][id"]=> string(2) "88" ["telefonia][subcategories][accessori][subcategories][custodie e cover][id"]=> string(2) "89" ["telefonia][subcategories][accessori][subcategories][custodie e cover][subcategories][tablet][id"]=> string(2) "90" ["telefonia][subcategories][accessori][subcategories][memorie esterne][id"]=> string(2) "91" ["tv"]=> array(1) { ["id"]=> string(2) "92" } ["tv][subcategories][accessori][id"]=> string(2) "93" ["tv][subcategories][accessori][subcategories][tv][id"]=> string(2) "94" } @dalibor karlović problem!
maybe took logic in wrong way, try explain better need do: have number of products listed in xml file. each product have tag 'category' , may have tag 'subcategory'. 'subcategory' tag may empty, contain 1 subcategory or more 1 separated specific char (ie:
<subcategory></subcategory;<subcategory>subcat1</subcategory>;<subcategory>subcat1 » subcat2 » subcat3</subcategory>
) @ point parsed xml file searching 'category' tags , start build $results array in form $results[$category_name]['id'] = $id. in same loop search 'subcategory' tags , if found them , aren't empty, explode them ». need build $results array in form following:
$results = array ( [cartoleria] => array //cartoleria comes 'category' tag ( [id] => 13 [subcategories] => array ( [subcat1] => array ( [id] => 14 [subcategories] => array ( [subcat2] => array ( [id] => 15 [subcategories] => array ( [subcat3] => array ( [id] => 16 ) ) ) ) ) ) ) )
you're creating array not contain nested arrays instead 1 level deep , keys they're right out of print_r() output.
what you'd need create true nested arrays instead.
Comments
Post a Comment