If $index is null, $newval is naturally pushed onto the end of the array as ArrayObject::append
(PHP 5 >= 5.0.0, PHP 7)
ArrayObject::offsetSet — Sets the value at the specified index to newval
Sets the value at the specified index to newval.
indexThe index being set.
newval
The new value for the index.
No value is returned.
Example #1 ArrayObject::offsetSet() example
<?php
class Example {
public $property = 'prop:public';
}
$arrayobj = new ArrayObject(new Example());
$arrayobj->offsetSet(4, 'four');
$arrayobj->offsetSet('group', array('g1', 'g2'));
var_dump($arrayobj);
$arrayobj = new ArrayObject(array('zero','one'));
$arrayobj->offsetSet(null, 'last');
var_dump($arrayobj);
?>
The above example will output:
object(ArrayObject)#1 (3) {
["property"]=>
string(11) "prop:public"
[4]=>
string(4) "four"
["group"]=>
array(2) {
[0]=>
string(2) "g1"
[1]=>
string(2) "g2"
}
}
object(ArrayObject)#3 (3) {
[0]=>
string(4) "zero"
[1]=>
string(3) "one"
[2]=>
string(4) "last"
}
If $index is null, $newval is naturally pushed onto the end of the array as ArrayObject::append
On my php 5.3.5 installation, i discovered that value can be set by reference and not by copy ... depending the context..
so this is différent from what a regular array()
<?php
function set(&$x, &$a )
{
$x[] = $a;
}
$x = new ArrayObject();
$y = array();
$z = new ArrayObject();
$a = array( 'foo' );
set($y,$a);
set($x,$a);
$z[]=$a;
$a = array( 'bar');
set($x,$a);
set($y,$a);
$z[]=$a;
print_r($x);
print_r($y);
print_r($z);
?>
// output
ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
[0] => Array
(
[0] => bar
)
[1] => Array
(
[0] => bar
)
)
)
Array
(
[0] => Array
(
[0] => foo
)
[1] => Array
(
[0] => bar
)
)
ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
[0] => Array
(
[0] => bar
)
[1] => Array
(
[0] => bar
)
)
)