Reply to Re: using $array1 = $array2 in PHP5 as if array is an object?

Your name:

Reply:


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

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация