Re: I beleive I have found a bug.....

From: Date: Wed, 29 Aug 2001 07:54:52 +0000
Subject: Re: I beleive I have found a bug.....
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-64951@lists.php.net to get a copy of this message
<Original message> From: Brian White <bwhite@steptwo.com.au> Date: Wed, Aug 29, 2001 at 04:01:06PM +1000 Message-ID: <4.3.2.20010829154702.00b62910@mail.steptwo.com.au> Subject: [PHP] I beleive I have found a bug..... > ... I just thought I would see if anyone else can reproduce it! > > Ok. The problem is in the following snippet of code. ( Note : this exmaple > is extremely contrived, and is the essence of a much more complicated > situation involving a function call from a class method... ) > > <?php > $data = array( "A" => "AA" , "B" => "BB", > "C"=> "CC", "D"=> "DD", "E" > => "EE" ); > > print "<pre>\n"; > foreach ( $data as $key1=>$val1 ) > { > // foreach ( $data as $key2=>$val2 ) > foreach ( array_keys($data) as $key2 ) // <= PROBLEM IS HERE > { > if ( $key1 == $key2 ) > print "<b>$key2</b>"; > else > print $key2; > > print " "; > } > print "\n"; > } > > print "</pre>"; > ?> > > I beleive it should generate > <pre> > <b>A</b> B C D E > A <b>B</b> C D E > A B <b>C</b> D E > A B C <b>D</b> E > A B C D <b>E</b> > </pre> > > Instead it generates > <pre> > <b>A</b> B C D E > </pre> > > If I replace the problem line > foreach ( array_keys($data) as $key2 ) > > with the alternate > foreach ( $data as $key2=>$val2 ) > > then it works fine. > > I am using PHP 4.0.4pl1. > > > Regs > > Brian White > > ------------------------- > Brian White > Step Two Designs Pty Ltd - SGML, XML & HTML Consultancy > Phone: +612-93197901 > Web: http://www.steptwo.com.au/ > Email: bwhite@steptwo.com.au > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > For additional commands, e-mail: php-general-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net </Original message> <Reply> Hai Brain, I don't _think_ this is a bug (note: think). I haven't taken a very good look at your code, but as I understand you believe that: foreach ($data as $key) delivers the same $key as in: foreach ($data as $key=>$value) Well... it doesn't. Check the manual on it. If you use the foreach ($x as $y) construction, $y is the value... not the key. Take a look at: http://www.php.net/manual/en/control-structures.foreach.php <Quote from PHP manual> foreach(array_expression as $value) foreach(array_expression as $key => $value) </Quote from PHP manual> I think this solves your problem... </Reply> -- * R&zE: -- »»»»»»»»»»»»»»»»»»»»»»»» -- Renze Munnik -- DataLink BV -- -- E: renze@datalink.nl -- W: +31 23 5326162 -- F: +31 23 5322144 -- M: +31 6 21811143 -- -- Stationsplein 82 -- 2011 LM HAARLEM -- Netherlands -- -- http://www.datalink.nl -- ««««««««««««««««««««««««

« previous php.general (#64951) next »