[PHP] foreach i referewncje

0

Nie wiem czy ja juz cos robie nie tak czy ... (moze juz jest to gdzies opisane ? jak tak prosil bym o link)

mamy kod:

<?php


header('Content-type: text/plain');

$data = array();
for ($i=0;$i<4;$i++) 
{
    $data[$i] = array();
	$data[$i]['cyfra'] = $i;
	$data[$i]['cos'] = "A";
}

print_r($data);

foreach($data as &$row)
{
 foreach($data as $rowx)
   {

   }
$row['cos'] = "B"; 
}

print_r($data);

?>

I efekt jego dzialania

PHP Version 5.2.5 Windows NT

Array
(
    [0] => Array
        (
            [cyfra] => 0
            [cos] => A
        )

    [1] => Array
        (
            [cyfra] => 1
            [cos] => A
        )

    [2] => Array
        (
            [cyfra] => 2
            [cos] => A
        )

    [3] => Array
        (
            [cyfra] => 3
            [cos] => A
        )

)
Array
(
    [0] => Array
        (
            [cyfra] => 0
            [cos] => B
        )

    [1] => Array
        (
            [cyfra] => 1
            [cos] => B
        )

    [2] => Array
        (
            [cyfra] => 2
            [cos] => B
        )

    [3] => Array
        (
            [cyfra] => 3
            [cos] => B
        )

)

oraz

PHP Version 5.1.6 Linux 2.6 i686
PHP Version 5.0.4 OpenBSD i386

Array
(
    [0] => Array
        (
            [cyfra] => 0
            [cos] => A
        )

    [1] => Array
        (
            [cyfra] => 1
            [cos] => A
        )

    [2] => Array
        (
            [cyfra] => 2
            [cos] => A
        )

    [3] => Array
        (
            [cyfra] => 3
            [cos] => A
        )

)
Array
(
    [0] => Array
        (
            [cyfra] => 0
            [cos] => B
        )

    [1] => Array
        (
            [cyfra] => 1
            [cos] => A
        )

    [2] => Array
        (
            [cyfra] => 2
            [cos] => A
        )

    [3] => Array
        (
            [cyfra] => 3
            [cos] => A
        )

)

Gdzie jest moj blad ? teoretycznie wynik pierwszy powinien byc spodziewanym. Patrzac na wersje bug zalatany (niestety nie mam wplywu na zmiane wersji linux :( ). A moze inaczej dla linuxowych ? nie mam dostepu do nowszych wersji (i nie chce mi sie reinstalowac ...) - czy tak tez jest ?

//EDIT------------------------
to takie pytanie bez przekopania netu, wystarczy ze poszukiwania tego cuda zajely mi troche czasu. Bede wdzieczny za test czy na nowszych wersjach tez tak jest ...

0

PHP 5.2.6 Linux 2.6 i686

Array
(
    [0] => Array
        (
            [cyfra] => 0
            [cos] => A
        )

    [1] => Array
        (
            [cyfra] => 1
            [cos] => A
        )

    [2] => Array
        (
            [cyfra] => 2
            [cos] => A
        )

    [3] => Array
        (
            [cyfra] => 3
            [cos] => A
        )

)
Array
(
    [0] => Array
        (
            [cyfra] => 0
            [cos] => B
        )

    [1] => Array
        (
            [cyfra] => 1
            [cos] => B
        )

    [2] => Array
        (
            [cyfra] => 2
            [cos] => B
        )

    [3] => Array
        (
            [cyfra] => 3
            [cos] => B
        )

)

Wygląda na to, że był to błąd w poprzednich wersjach, upgrade powinien pomóc.

Pozdrawiam mac

0

dzieki !

odnalazlem kilka bledow w bug liscie dotyczacych tablic i foreach i ten chyba mozna zaliczyc do
http://bugs.php.net/bug.php?id=29992

1 użytkowników online, w tym zalogowanych: 0, gości: 1