ArrayObject::offsetSet

(PHP 5, PHP 7, PHP 8)

ArrayObject::offsetSet将指定索引处的的值设置为 newval

描述

public ArrayObject::offsetSet(混合 $key, 混合 $value):

将指定索引处的的值设置为 newval。

参数

key

要设置的索引。

value

key 的新值。

返回值

不返回值。

示例

示例 #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"
}

参见

添加说明

用户贡献的说明 2 条说明

3
jerikojerk
12 年前
在我的 php 5.3.5 安装中,我发现值可以通过引用设置,而不是通过复制...这取决于上下文。

因此,这与普通数组() 不同。

<?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);
?>

// 输出
ArrayObject 对象
(
[storage:ArrayObject:private] => 数组
(
[0] => 数组
(
[0] => bar
)

[1] => 数组
(
[0] => bar
)

)

)
数组
(
[0] => 数组
(
[0] => foo
)

[1] => 数组
(
[0] => bar
)

)
ArrayObject 对象
(
[storage:ArrayObject:private] => 数组
(
[0] => 数组
(
[0] => bar
)

[1] => 数组
(
[0] => bar
)

)

)
2
n dot lenepveu at gmail dot com
15 年前
如果 $index 为空,$newval 会自然地作为 ArrayObject::append 推送到数组的末尾。
To Top