(PHP 5, PHP 7, PHP 8)
ArrayObject::offsetSet — Sets the value at the specified index to newval
Sets the value at the specified index to newval.
keyThe index being set.
value
The new value for the key.
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 (1) {
["storage":"ArrayObject":private]=>
object(Example)#2 (3) {
["property"]=>
string(11) "prop:public"
["4"]=>
string(4) "four"
["group"]=>
array(2) {
[0]=>
string(2) "g1"
[1]=>
string(2) "g2"
}
}
}
object(ArrayObject)#3 (1) {
["storage":"ArrayObject":private]=>
array(3) {
[0]=>
string(4) "zero"
[1]=>
string(3) "one"
[2]=>
string(4) "last"
}
}
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
)
)
)If $index is null, $newval is naturally pushed onto the end of the array as ArrayObject::append