©
Ce document utilise Manuel du site Web PHP chinois Libérer
(PHP 5 >= 5.0.0)
ArrayObject::offsetSet — 为指定索引设定新的值
$index
, mixed $newval
)设置指定的索引为新的值
index
将要被设置的索引
newval
参数 index
所对应的新值。
没有返回值。
Example #1 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" }
[#1] jerikojerk [2011-08-22 15:58:01]
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
)
)
)
[#2] n dot lenepveu at gmail dot com [2008-09-30 00:20:00]
If $index is null, $newval is naturally pushed onto the end of the array as ArrayObject::append