在什么情况下会
$array[$index] = $element;
和
unset($array[$index]);
$array[$index] = $element;
与众不同?
假设我没有在我的数组中使用任何引用,这些在逻辑上是等价的吗?
答案 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;