开发者

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

I am creating an array and want to delete the first element of the array and re-index it. From what I can tell, array_shift() is the right solution. However, it is not working in my implementation.

I have a member variable of my class that is defined as an array called $waypoint_city. Here is the variable output prior to shifting the array:

print_r($this->waypoint_city);

Result:

Array ( [0] => [1] => JACKSONVILLE [2] => ORLANDO [3] => MONTGOMERY [4] =开发者_开发问答> MEMPHIS )

If I do the following, I get the correct result:

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

Result:

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

However, if I try to reassign the result to the member variable it doesn't work... Anyone know why that is?

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

If I try to print_r($this->waypoint_city) it looks like nothing is in there. Thanks to anyone who can save the hair that I haven't pulled out, yet.


array_shift[docs] changes the array in-place. It returns the first element (which is empty in your case):

Returns the shifted value, or NULL if array is empty or is not an array.

All you have to do is:

array_shift($this->waypoint_city);


That's because there IS nothing there. You have element 0 set to nothing, and array_shift returns the shifted element, which the first time through is null.


array_shift() gets its parameter as reference, so you should call array_shift() like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜