PHP Conference Japan 2024

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 (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"
  }
}

參見

新增註解

使用者貢獻的註解 2 則註解

jerikojerk
13 年前
在我的 php 5.3.5 安裝中,我發現 value 可以透過參考設定,而不是透過複製設定...取決於上下文。

所以這與一般的 array() 不同

<?php

函式 設定(&$x, &$a )
{
$x[] = $a;
}

$x = new ArrayObject();
$y = array();
$z = new ArrayObject();

$a = array( 'foo' );
設定($y,$a);
設定($x,$a);
$z[]=$a;

$a = array( 'bar');

設定($x,$a);
設定($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
)

)

)
n dot lenepveu at gmail dot com
16 年前
如果 $index 為 null,$newval 自然會被 push 到陣列的末端,如同 ArrayObject::append
To Top