Tried, gives the same result with one element :(

What's working:

$cats = array( array( 'id' => 1 ) );
while ( $c = array_shift($cats) ) {
        echo $c['id'];
        if ( $c['id'] < 5 ) {
                $c['id']++;
                $cats[] = $c;
        }
}

But this is 'while' and it pops all elements from the array...

Cheers,

        Tamas



-----Original Message-----
From: Louis Huppenbauer [mailto:louis.huppenba...@gmail.com] 
Sent: Tuesday, July 05, 2011 4:12 PM
To: Robert Cummings
Cc: Dajka Tamas; php-general@lists.php.net
Subject: Re: [PHP] Foreach question

Or maybe he tried to do the following?

<?php
foreach ( $cats as&$c ) {
               echo $c['id'];
               if ($c['id']<  5) {
                              $cats[] = array('id' => ($c['id'] + 1));
               }
}
?>

2011/7/5 Robert Cummings <rob...@interjinn.com>:
>
> On 11-07-05 09:40 AM, Dajka Tamas wrote:
>>
>> Hi all,
>>
>>
>>
>> I've bumped into an interesting thing with foreach. I really don't know,
>> if
>> this is normal working, or why it is, so I got curious.
>>
>>
>>
>> The script:
>>
>>
>>
>> foreach ( $cats as&$c ) {
>>
>>                echo $c['id'];
>>
>>                if ( $c['id']<  5 ) {
>>
>>                               $c['id']++;
>>
>>                               $cats[] = $c;
>>
>>                }
>>
>> }
>
> That's a bizarre loop... you're feeding references to elements of the array
> back into the array over which the loop is iterating. If you REALLY want to
> do what you are doing, then do the following:
>
> <?php
>
> foreach( array_keys( $cats ) as $key )
> {
>    $c = &$cats[$key];
>
>    echo $c['id'];
>
>    if( $c['id'] < 5 )
>    {
>        $c['id']++;
>        $cats[] = $c;
>    }
> }
>
> ?>
>
> Cheers,
> Rob.
> --
> E-Mail Disclaimer: Information contained in this message and any
> attached documents is considered confidential and legally protected.
> This message is intended solely for the addressee(s). Disclosure,
> copying, and distribution are prohibited unless authorized.
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to