为什么在数组中设置元素并取消设置然后在数组中设置元素是不同的? PHP

时间:2009-08-12 13:24:10

标签: php arrays reference

在什么情况下会

$array[$index] = $element;

unset($array[$index]);
$array[$index] = $element;

与众不同?

假设我没有在我的数组中使用任何引用,这些在逻辑上是等价的吗?

4 个答案:

答案 0 :(得分:4)

如果$ index不是数字,则第二个变量总是会将元素附加到数组的末尾,因此键的顺序将会改变。

答案 1 :(得分:3)

unset($array[$index]); 
如果在$ array中找不到$ index,

会引发E_NOTICE。除此之外它看起来一样。

答案 2 :(得分:3)

如果您先删除某个密钥然后重新添加该密钥,则会更改该订单:

$arr = array("foo1" => "bar1", "foo2" => "bar2");
$arr["foo1"] = "baz";
print_r($arr);


$arr = array("foo1" => "bar1", "foo2" => "bar2");
unset($arr["foo1"]);
$arr["foo1"] = "baz";
print_r($arr);

输出:

Array
(
    [foo1] => baz
    [foo2] => bar2
)

Array
(
    [foo2] => bar2
    [foo1] => baz
)

答案 3 :(得分:0)

如果您需要知道在分配之前存在(isset)是有用的,请使用“unset”,但这些只是添加“unset”的步骤。

例如:

if ($array[$index]=="a")
   unset($array[$index]);

...

if (!isset($array[$index]))
   $array[$index] = $element;