2011-06-30 38 views
2

我正在创建一个数组,并且想要删除数组的第一个元素并重新索引它。从我可以告诉,array_shift()是正确的解决方案。但是,它在我的实现中不起作用。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) 

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

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

如果我尝试print_r($ this-> waypoint_city),它看起来好像什么都没有。感谢任何能挽救我还没拔出的头发的人。

回答

7

array_shift[docs]更改阵列就地。它返回该第一元件(其是空的你的情况):

返回移位的值,或NULL如果阵列是空的或不是一个数组。

所有你需要做的是:

array_shift($this->waypoint_city); 
+2

这是RTFM的经典案例......我觉得自己像个白痴。谢谢你让我挺直。谢谢!!! – user77413

2

这是因为有无所不有。元素0设置为空,array_shift返回第一次通过的移位元素为空。

1

array_shift()获得其作为基准参数,所以你应该叫array_shift()这样的:

$shiftedElement = array_shift(&$this->waypoint_city); 
相关问题