ArrayObject::offsetSet()
(PHP 5, PHP 7)
为指定索引设定新的值
说明
public ArrayObject::offsetSet(mixed $index, mixed $newval): void
设置指定的索引为新的值
参数
- $index
将要被设置的索引
- $newval
参数$index所对应的新值。
返回值
没有返回值。
范例
ArrayObject::offsetSet()例子
<?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);
?>
以上例程会输出:
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"
}
参见
- ArrayObject::append() 追加新的值作为最后一个元素。
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
)
)
)