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 — Intercambia el array por otro
Descripción
Valores devueltos
Devuelve el array antiguo.
Ejemplos
Ejemplo #1 ArrayObject::exchangeArray() example
<?php
// Array de frutas
$fruits = array("limones" => 1, "naranjas" => 4, "bananas" => 5, "manzanas" => 10);
// Array de lugares en Europa
$locations = array('Amsterdam', 'Paris', 'London');
$fruitsArrayObject = new ArrayObject($fruits);
// Now exchange fruits for locations
$old = $fruitsArrayObject->exchangeArray($locations);
print_r($old);
print_r($fruitsArrayObject);
?>
El resultado del ejemplo sería:
Array
(
[limones] => 1
[naranjas] => 4
[bananas] => 5
[manzanas] => 10
)
ArrayObject Object
(
[0] => Amsterdam
[1] => Paris
[2] => London
)
Dmitri Snytkine ¶
3 years ago
