array_pop()
返回数组的最后一项,而不是删除数组的最后一项。为什么会这样?
$blam = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$blam = explode("/", $blam);
$blam = array_pop($blam);
print_r($blam);
答案 0 :(得分:7)
<强>问题强>
您正在正确执行弹出操作,但是您立即将当前删除的元素分配给变量$ blam。因此,它有效地使该变量保持该值,即弹出的元素。
<强>解决方案强>
不要将pop函数返回的值赋给变量。
<强>代码强>
$blam = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$blam = explode("/", $blam);
array_pop($blam);
print_r($blam);
答案 1 :(得分:5)
您覆盖变量。如果您需要删除的值,请将其更改为
$foo = array_pop($blam);
该功能的行为符合预期。来自docs:
array_pop()弹出并返回数组的最后一个值,将数组缩短一个元素。
使用时
$blam = array_pop($blam);
你在说:
&#34;从$blam
中删除最后一个元素并将其存储在$blam
&#34;中,用之前的元素替换以前的内容。
详细说明,我认为这里的混淆是 array_pop不会返回新数组,而是返回已删除的值,更改原始阵列。