PHP array_shift()不适合我。我究竟做错了什么?

时间:2011-06-30 22:44:49

标签: php

我正在创建一个数组,想要删除数组的第一个元素并重新索引它。据我所知,array_shift()是正确的解决方案。但是,它在我的实现中不起作用。

我有一个我的类的成员变量,它被定义为一个名为$ waypoint_city的数组。这是移位数组之前的变量输出:

print_r($this->waypoint_city);

结果:

Array ( [0] => [1] => JACKSONVILLE [2] => ORLANDO [3] => MONTGOMERY [4] => MEMPHIS )

如果我执行以下操作,我会得到正确的结果:

print_r(array_shift($this->waypoint_city));

结果:

Array ( [0] => JACKSONVILLE [1] => ORLANDO [2] => MONTGOMERY [3] => MEMPHIS )

但是,如果我尝试将结果重新分配给成员变量,它就不起作用......任何人都知道为什么会这样?

$this->waypoint_city = array_shift($this->waypoint_city);

如果我尝试print_r($ this-> waypoint_city),它看起来就像什么都没有。感谢任何可以挽救我尚未退出的头发的人。

3 个答案:

答案 0 :(得分:7)

array_shift[docs]更改阵列就地。它返回第一个元素(在您的情况下为空):

  

返回移位的值,如果数组为空或不是数组,则返回 NULL

您所要做的就是:

array_shift($this->waypoint_city);

答案 1 :(得分:2)

那是因为那里什么都没有。您将元素0设置为空,array_shift返回已移位的元素,第一次通过该元素为空。

答案 2 :(得分:1)

array_shift()获取其参数作为参考,因此您应该像这样调用array_shift()

$shiftedElement = array_shift(&$this->waypoint_city);