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);
精彩评论