You are here: Re: PHP bug within multi. dimensional arrays? « PHP « IT news, forums, messages
Re: PHP bug within multi. dimensional arrays?

Posted by Matthew Weier O'Phinney on 06/06/05 17:03

* Merlin <news.groups@web.de>:
> 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@garden.org | http://vermontbotanical.org

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация