【发布时间】:2012-12-31 14:14:20
【问题描述】:
我遇到了一些 我 认为微妙但非常酷的 PHP 行为。但我不明白怎么...
$test=array('a'=>'c', 'b'=>'c');
unset($test['a']);
var_dump($test);
打印出来
array(1) { ["b"]=> string(1) "c" }
我原以为数组会被清空。毕竟,$test['a'] 的计算结果为 'c',所以 unset 函数只看到 'c' 但知道它只是我想要删除的第一个 'c' 值?
我的猜测是解释器非常聪明,并且在给它的参数内查看数组内部 - 但这纯粹是猜想......
【问题讨论】:
-
我没有按照您的预期遵循您的逻辑。您取消设置特定的数组键。为什么
b=>c会消失? -
@Brad OP 期望 PHP 首先解释
$test['a'],它保存'c'的值,然后删除所有相同的值。 -
@Jack,哦,有道理!我现在知道了。当这样的东西有意义时,我想我已经研究 PHP 太久了。
-
@rink.attendant.6,我在发帖前确实看过这个问题(感谢 SO 在您开始输入时显示相关任务的有用功能)但没有人解释为什么 - 但下面的 Kolink现在说清楚了 - 当然,只需使用 pass by ref。
标签: php