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:

  1. <subcategory></subcategory;
  2. <subcategory>subcat1</subcategory>;
  3. <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

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

php - Find a regex to take part of Email -