Pyh.conf’25: a new PHP conference for the Russian-speaking community

Voting

: six plus two?
(Example: nine)

The Note You're Voting On

anon at no spam dot no address dot com
21 years ago
Adding on to what bond at noellebond dot com said, if you want to remove an index from the end of the array, if you use unset, the next index value will still be what it would have been.

Eg you have
<?php
$x
= array(1, 2);

for (
$i = 0; $i < 5; $i++)
{
unset(
$x[(count($x)-1)]); //remove last set key in the array

$x[] = $i;
}
?>

You would expect:
Array([0] => 1, [1] => 4)
as you want it to remove the last set key....

but you actually get
Array ( [0] => 1 [4] => 2 [5] => 3 [6] => 4 )

This is since even though the last key is removed, the auto indexing still keeps its previous value.

The only time where this would not seem right is when you remove a value off the end. I guess different people would want it different ways.

The way around this is to use array_pop() instead of unset() as array_pop() refreshes the autoindexing thing for the array.
<?php
$x
= array(1, 2);

for (
$i = 0; $i < 5; $i++)
{
array_pop($x); // removes the last item in the array

$x[] = $i;
}
?>

This returns the expected value of x = Array([0] => 1, [1] => 4);

Hope this helps someone who may need this for some odd reason, I did.

<< Back to user notes page

To Top