我遇到了一些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非常聪明,并且在给出的参数内查看数组内部 - 但这纯粹是猜想...
答案 0 :(得分:1)
unset
不是函数,它是一种语言结构。因此,它不一定遵循相同的规则。
然而,在这种情况下,它实际上与传递引用类似。它接受变量的引用,并将其销毁。
答案 1 :(得分:0)
您实际在做的是从数组$test
中销毁(取消设置)键“a”。因此,在该密钥被销毁之后,数组中只存在“b”。
如果要从数组中删除“c”的所有值,请使用array_diff()。