为啥 array_pop() 返回数组的最后一项而不是删除它? [关闭]
Posted
技术标签:
【中文标题】为啥 array_pop() 返回数组的最后一项而不是删除它? [关闭]【英文标题】:Why is array_pop() returning the last item of the array instead of deleting it? [closed]为什么 array_pop() 返回数组的最后一项而不是删除它? [关闭] 【发布时间】:2018-04-27 20:58:21 【问题描述】: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.
【问题讨论】:
你正在用最后一项覆盖变量...array_pop()
返回从数组中弹出的元素;并通过引用修改数组......如PHP Docs 中所述
也许在这一点上看起来很明显,但只是为了明确说明,如果您只想删除最后一项,请使用array_pop($blam);
而不是$blam = array_pop($blam);
。
再次否决仙女,完全合法的问题可能会帮助其他人,因为它帮助了我......这不是一个明显的错误
在所有给出的答案中,这是一个非常重要的问题。我发现了很多很棒的知识。为什么船这么轻?
【参考方案1】:
您正在覆盖该变量。如果您需要删除的值,请将其更改为
$foo = array_pop($blam);
函数按预期运行。来自docs:
array_pop() 弹出并返回数组的最后一个值,将数组缩短一个元素。
当你使用
$blam = array_pop($blam);
你是说:
“从$blam
中删除最后一个元素并将其存储在$blam
中”,用该元素替换之前的内容。
详细地说,我认为这里的混淆是 array_pop 不返回新数组,而是返回删除的值,正在改变原始数组。
【讨论】:
【参考方案2】:问题
您正在正确地执行弹出操作,但您立即将当前删除的元素分配给变量 $blam。所以它有效地使该变量保持值,即被弹出的元素。
解决方案
不要将pop函数返回的值赋给变量。
代码
$blam = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$blam = explode("/", $blam);
array_pop($blam);
print_r($blam);
【讨论】:
以上是关于为啥 array_pop() 返回数组的最后一项而不是删除它? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Xamarin Forms Firebase DeleteAsync 逻辑 - 为啥删除第一项而不是第二项?