我正在创建一个数组,想要删除数组的第一个元素并重新索引它。据我所知,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),它看起来就像什么都没有。感谢任何可以挽救我尚未退出的头发的人。
答案 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);