PHP未设置行为

时间:2013-01-17 04:42:53

标签: php

我遇到了一些PHP行为认为是微妙的,但非常酷。但我不明白......

$test=array('a'=>'c', 'b'=>'c');
unset($test['a']);
var_dump($test);

打印

array(1) { ["b"]=> string(1) "c" }

我原本预计数组会被清空。毕竟, $ test [' a'] 评估为' c'所以未设置的功能只能看到' c'但是知道这只是第一个' c'我想删除的价值?

我的猜测是,interpeter非常聪明,并且在给出的参数内查看数组内部 - 但这纯粹是猜想...

2 个答案:

答案 0 :(得分:1)

呃,不,不。 unset不是函数,它是一种语言结构。因此,它不一定遵循相同的规则。

然而,在这种情况下,它实际上与传递引用类似。它接受变量的引用,并将其销毁。

答案 1 :(得分:0)

您实际在做的是从数组$test中销毁(取消设置)键“a”。因此,在该密钥被销毁之后,数组中只存在“b”。

如果要从数组中删除“c”的所有值,请使用array_diff()