It seems that input array is always passed by reference.
For example if you have an existing array
$array with some values
then you have an arrayobject $o
and then you do this:
$o->exchangeArray($array);
$o->offsetSet('somekey', 'some value');
Now if you check your $array array, it will have
a key 'somekey' with value of 'some value'
I totally did not expect that, I am sure it was a mistake to pass array by reference by default.
ArrayObject::exchangeArray
(PHP 5 >= 5.1.0)
ArrayObject::exchangeArray — Remplace un tableau par un autre
Valeurs de retour
Retourne l'ancien tableau.
Exemples
Exemple #1 Exemple avec ArrayObject::exchangeArray()
<?php
// Tableaux de fruits
$fruits = array("citrons" => 1, "oranges" => 4, "bananes" => 5, "pommes" => 10);
// Tableau de villes en Europe
$locations = array('Amsterdam', 'Paris', 'Londres');
$fruitsArrayObject = new ArrayObject($fruits);
// Échange des fruits par des villes
$old = $fruitsArrayObject->exchangeArray($locations);
print_r($old);
print_r($fruitsArrayObject);
?>
L'exemple ci-dessus va afficher :
Array
(
[citrons] => 1
[oranges] => 4
[bananes] => 5
[pommes] => 10
)
ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
[0] => Amsterdam
[1] => Paris
[2] => Londres
)
)
Dmitri Snytkine
15-Dec-2009 02:11
