array_pop

(PHP 4, PHP 5)

array_pop -- 将数组最后一个单元弹出(出栈)

说明

mixed array_pop ( array &array )

array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL

注: 使用本函数后会重置(reset())数组指针。

例子 1. array_pop() 例子

<?php
$stack
= array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>

经过此操作后,$stack 将只有 3 个单元:

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)

并且 rasberry 将被赋给 $fruit

参见 array_push()array_shift()array_unshift()


add a note add a note User Contributed Notes
rmondragon at gmail dot com
08-Jun-2005 05:03
In a previous example ...
<?php
function array_trim ( $array, $index ) {
   if (
is_array ( $array ) ) {
     unset (
$array[$index] );
    
array_unshift ( $array, array_shift ( $array ) );
     return
$array;
     }
   else {
     return
false;
     }
   }
?>

This have a problem. if u unset the last value and then use
<?
array_unshift
( $array, array_shift ( $array ) );
?>

will return a :  Array ( [0] => )
so u can fix it using...

<?php
if (count($array) > 0) array_unshift ( $values, array_shift ( $values ) );           
?>

good luck ;)
16-Dec-2004 12:29
strrchr is a lot more useful than the other example using array_pop for finding the extension of a file. For example:

<?php
$ext
= strrchr($filename, ".");
?>

$ext will contain the extension of the file, including a ".", if the file has an extension, and FALSE if the file has no extension. If the file has multiple extensions, such as "filename.tar.gz", then this construction will just return the last extension.
eddie at metafoundry dot com
26-Nov-2004 12:35
Quick way to get the extension from a file name using array_pop:

$ext = array_pop(explode(".",$filename));
31-Mar-2004 05:55
A function to delete an array value that recalculates the index ( its very short and easy to understand ).
Hope this might help someone...

<?php
/* Usage:
   $array : Array
   $indey : Integer
  
   The value of $array at the index $index will be
   deleted by the function.
*/
function array_trim ( $array, $index ) {
   if (
is_array ( $array ) ) {
     unset (
$array[$index] );
    
array_unshift ( $array, array_shift ( $array ) );
     return
$array;
     }
   else {
     return
false;
     }
   }
?>
Alex Dowgailenko
15-Dec-2003 07:36
array_pop() can be usefull for fetching extentions of files, especially in cases where there might be more than one period in the filename.

eg:

<?php
$filename
= "textfile.txt.bak";
$tmp = explode(".", $filename);
$ext = array_pop($tmp);

print_r($ext); // Shows "bak"
?>
22-Oct-2003 04:46
Be aware that using array_pop on an associative array that uses a numeric string as a key changes the key:

<?php
$stack
= array("12" => "green", "54" => "brown", "672" => "blue");
print_r($stack);
$fruit = array_pop($stack);
print_r($stack);
?>

Results of execution:
Array
(
   [12] => green
   [54] => brown
   [672] => blue
)
Array
(
   [0] => green
   [1] => brown
)

However, if there is a non-numeric character in the key, the key will be maintained:

<?php
$stack
= array("g1" => "green", "b1" => "brown", "b2" => "blue");
print_r($stack);
$fruit = array_pop($stack);
print_r($stack);
?>

Results of execution:
Array
(
   [g1] => green
   [b1] => brown
   [b2] => blue
)
Array
(
   [g1] => green
   [b1] => brown
)
ryan8613(at)hotmail(dot)com
08-Jun-2003 09:10
A function that may help some out, considering it's pretty much the one mentioned previously...

<?php
function array_trim($arr, $indice) {
       if(!isset(
$indice)) {
              
$indice = count($arr)-1;
       }
       unset(
$arr[$indice]);
      
array_shift($arr);
       return
$arr;
}
?>

It cuts the given index value off of the array, but without the shift, if  the 'index' value isn't given, it cuts off the end value.
Alex Chac
01-Mar-2003 09:16
alex.chacon@terra.com
Hi
Here there is a function that delete a elemente from a array and re calculate indexes

<?php
function eliminarElementoArreglo ($array, $indice)
{
   if (
array_key_exists($indice, $array))
   {
      
$temp = $array[0];
      
$array[0] = $array[$indice];
      
$array[$indice] = $temp;
      
array_shift($array);

      
//reacomodamos ndices
      
for ($i = 0 ; $i < $indice ; $i++)
       {
          
$dummy = $array[$i];
          
$array[$i] = $temp;
          
$temp = $dummy;
       }
   }
   return
$array;
}
?>