Re: I beleive I have found a bug.....
| From: | Brian White | Date: | Wed, 29 Aug 2001 08:16:49 +0000 |
| Subject: | Re: I beleive I have found a bug..... | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-64955@lists.php.net to get a copy of this message | ||
Renze Munnik said:
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)You didn't read my code closely enough: I said:
If I replace the problem lineAt 09:54 29/08/2001 +0200, * R&zE: wrote:foreach ( array_keys($data) as $key2 ) ^^^^^^^^^^with the alternateforeach ( $data as $key2=>$val2 )
<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------------------------- 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$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 lineforeach ( array_keys($data) as $key2 )with the alternateforeach ( $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 -- «««««««««««««««««««««««« -- 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