|
Posted by gosha bine on 09/27/07 21:10
Summercool wrote:
> I wonder in PHP5, can we use
>
> $array1 = $array2 as if it is a class?
>
> i think right now, the whole array is copied (by key and value)...
Correct. Arrays, like everything else, are assigned by copy, however php
implements lazy copying, that is, no bytes are physically moved until
you modify one of the copies.
$a1 = array(1, 2, 3);
$a2 = $a1; // no copying
$a2[0] = 9; // copy $a1 to $a2 and change $a2
>
> and i want to assign by reference but NOT in the alias sense.
>
> in other world, i want to say
>
> $array1 =& $array2;
> $array2 = range(1, 3);
>
> and I don't want $array1 to change, just like any other objects in
> PHP5.
>
Wrap them in objects.
//
$a1 = new stdclass;
$a1->a = array(1, 2, 3);
$a2 = $a1;
$a1->a[0] = 123;
echo $a2->a[0]; // $a1->a and $a2->a are the same
$a2 = 'foo';
var_dump($a1); // $a1 and $a2 are NOT the same
//
--
gosha bine
extended php parser ~ http://code.google.com/p/pihipi
blok ~ http://www.tagarga.com/blok
Navigation:
[Reply to this message]
|