PHP array_shift()对我不起作用.我做错了什么


PHP array_shift() not working for me. What am I doing wrong?

我正在创建一个数组,希望删除数组的第一个元素并重新索引。据我所知,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);

如果我尝试打印_r($this->waypoint_city),看起来里面什么都没有。感谢所有能拯救我还没拔出的头发的人。

array_shift[docs]在适当的位置更改数组。它返回第一个元素(在您的情况下为空):

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

你所要做的就是:

array_shift($this->waypoint_city);

那是因为那里什么都没有。元素0设置为零,array_shift返回移位后的元素,第一次通过时为null。

array_shift()获取其参数作为引用,因此您应该调用array_shiff(),如下所示:

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