【问题标题】: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);
  • 再次否决仙女,完全合法的问题可能会帮助其他人,因为它帮助了我......这不是一个明显的错误
  • 在所有给出的答案中,这是一个非常重要的问题。我发现了很多很棒的知识。为什么船这么轻?

标签: php


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2013-12-16
      • 2018-09-05
      • 2019-09-12
      • 1970-01-01
      • 2011-04-10
      • 2020-05-09
      • 2017-07-15
      • 2021-05-24
      • 1970-01-01
      相关资源
      最近更新 更多