* Merlin <news.groups@xxxxxx>: > Hi there, > > I am outputting an multidim. array. That works fine, except one thing. The first > letter of the value inside dimension 1 always gets printed. > > For example: > > I fill the arrays: > while ($row = mysql_fetch_object($result)){ > $cat[$row->main_id][name] = $row->main_name; > $cat[$row->main_id][$row->sub_id][name] = $row->sub_name; > } First off, if you're creating associative arrays, you should quote the keys: $cat[$row->main_id]['name'] = $row->main_name; If you don't do so, PHP assumes you're using a constant value for the key name. > Then I output them: > foreach ($cat AS $maincat){ > echo $maincat[name].':'; Quote your keys! > foreach($maincat AS $subcat){ You do realize that the above will also loop over the index 'name', right?... > echo $subcat[name].$br; and since it does, the first element in that array is 'name', which isn't an array, but a string. Since the 'name' constant isn't defined, it will interpret that as 'true', or 1, and so it takes the first character of that string. > } > echo $br; > } > > Which does result in: > > Europe:E > Germany > UK > > North America:N > US > CA > > As you can see I get the extra letters N and E. Is this an php error or did I do > something wrong? So, what you should probably do is create an additional layer in your multi-dimensional array for the subcategories, and have it of the form sub_id => sub_name: $cat[$row->main_id]['subs'][$row->sub_id] = $row->sub_name; Then loop over that: foreach ($cat as $main_cat) { echo $maincat['name'] . ":\n"; foreach ($maincat['subs'] as $sub_id => $sub_name) { echo "$sub_name$br"; // could also use $sub_id here if // desired } } -- Matthew Weier O'Phinney | WEBSITES: Webmaster and IT Specialist | http://www.garden.org National Gardening Association | http://www.kidsgardening.com 802-863-5251 x156 | http://nationalgardenmonth.org mailto:matthew@xxxxxxxxxx | http://vermontbotanical.org -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php