|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-02-21 12:34 UTC] greg at mtechsolutions dot ca
Just a small request that could be fairly useful.
Say you have an array of objects, $objects. Right now, doing:
foreach ($objects as $obj) {
$obj->something();
}
will create a copy of each object (using unnecessary memory) and call something() on the copy, not the actual object (which is bad if it's a mutator function of that class).
The best way to do it now is to do:
foreach (array_keys($objects) as $key) {
$objects[$key]->something();
}
but it would be very cool if php had the syntax:
foreach ($objects as &$obj)
where it would create $obj as a reference to each object.
thanks
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 08:00:01 2025 UTC |
Objects are bad examples as they will completely change how they behave in ZE2. However, it is true for normal arrays and it's in the TODO list of PHP: "Zend ---- * allow foreach ($array as $k => &$val) syntax. right now we cannot traverse an array without copying each element."PHP5 has support for traversing arrays with objects and getting not a copy but a reference : foreach ($a as &$v) { } Example code : <?php $a = array((object)1, (object)2,(object)3,(object)4); var_dump($a); foreach ($a as &$v) { $v->scalar++; } var_dump($a); ?>