为什么array_pop()返回数组的最后一项而不是删除它?

时间:2017-11-14 19:28:10

标签: php

array_pop()返回数组的最后一项,而不是删除数组的最后一项。为什么会这样?

$blam = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$blam = explode("/", $blam); 
$blam = array_pop($blam);
print_r($blam);

You can test out the php here.

2 个答案:

答案 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不会返回新数组,而是返回已删除的值更改原始阵列。