end

(PHP 3, PHP 4, PHP 5)

end --  将数组的内部指针指向最后一个单元

说明

mixed end ( array &array )

end()array 的内部指针移动到最后一个单元并返回其值。

例子 1. 简单的 end() 例子

<?php
$fruits
= array('apple','banana','cranberry');
echo
end($fruits); // cranberry
?>

参见 current()each()prev()next()reset()


add a note add a note User Contributed Notes
johnny at west dot net
03-Nov-2006 10:45
An easier way to get the last key:
$lastkey = end(array_keys($arr));
jasper at jtey dot com
12-Jul-2006 03:48
This function returns the value at the end of the array, but you may sometimes be interested in the key at the end of the array, particularly when working with non integer indexed arrays:

<?php
// Returns the key at the end of the array
function endKey($array){
 
end($array);
 return
key($array);
}
?>

Usage example:
<?php
$a
= array("one" => "apple", "two" => "orange", "three" => "pear");
echo
endKey($a); // will output "three"
?>
Flavio Ventura
30-Nov-2005 12:02
In some previous post you can use

current($array)

 instead of

$array[key($array)]

I think it's more self-explaining.
ken at expitrans dot com
28-Oct-2005 12:02
Please note that from version 5.0.4 ==> 5.0.5 that this function now takes an array. This will possibly break some code for instance:

<?php

echo ">> ".end(array_keys(array('x' => 'y')))."\n";

?>

which will return "Fatal error: Only variables can be passed by reference" in version <= 5.0.4 but not in 5.0.5.

If you run into this problem with nested function calls, then an easy workaround is to assign the result from array_keys (or whatever function) to an intermediary variable:

<?php

$x
= array_keys(array('x' => 'y'));
echo
">> ".end($x)."\n";

?>
mika dot stenberg at helsinki dot fi
11-Aug-2005 09:24
Here's something useful with arrays that I did: change an items position up or down in array. Thanks to previous posters for some useful functions (included):

// $mode -1 (negat) moves the item down, +1 (pos) moves the item up
// I used this because i parsed the mode from the query string
// You get the picture though
// $from_id points which item to move

function change_pos($array, $from_id, $mode){

// get hold of the beginning and the end
$start = first($array);
$end = last($array);

reset($array);

// find the position in an array
array_set_current($array, $from_id);

// remember the old value
$temp = $archive[ $from_id ];

// move down

if ($uusi_id < 0){
 
 
   if (key($array) != $end) {

           $array[ $from_id ] = next($array);
           $array[key($aray)] = $temp;
         }
   else echo "Couldnt move it!";
}

// move up
else if ( key($array) != $start ) {

   $array[ $from_id ] = prev($array);
   $array[key($array)] = $temp;
   save($array);
   }
else echo "Couldnt do it !";

}

function array_set_current(&$array, $key){
   reset($array);
   while(current($array)){
       if(key($array) == $key){
           break;
       }
       next($array);
   }
}

function first(&$array) {
if (!is_array($array)) return null;
if (!count($array)) return null;
reset($array);
return key($array);
}

function last(&$array) {
if (!is_array($array)) return null;
if (!count($array)) return null;
end($array);
return key($array);
}
12-May-2005 04:21
Fix for unknown writer of 29-aug-2002.
If you need to get a reference to the first or last element of an array, use these functions:

   function &first(&$array) {
       if (!is_array($array))
           return null;
       if (!count($array))
           return false; // like reset()
       reset($array);
       return $array[key($array)];
   }
      
   function &last(&$array) {
       if (!is_array($array))
           return null;
       if (!count($array))
           return false; // like end()
       end($array);
       return $array[key($array)];
   }

Example (watch out - use as &last() and &first()):

$a = array( 0 => 'less', 10 => 'ten', 20 => ' more');

if ($first = & first($a)) // not false or null
   $first = 'nothing';
if ($last = & last($a)) // not false or null
   $last = 'double';

Now $a is array( 0 => 'nothing', 10 => 'ten', 20 => ' double')
user at mail dot com
02-Mar-2005 11:29
It may be obvious, but if the array is empty, end() returns bool(false).
29-Aug-2002 09:34
If you need to get a reference on the first or last element of an array, use these functions because reset() and end() only return you a copy that you cannot dereference directly:

function first(&$array) {
if (!is_array($array)) return &$array;
if (!count($array)) return null;
reset($array);
return &$array[key($array)];
}

function last(&$array) {
if (!is_array($array)) return &$array;
if (!count($array)) return null;
end($array);
return &$array[key($array)];
}
29-Aug-2002 09:17
When adding an element to an array, it may be interesting to know with which key it was added. Just adding an element does not change the current position in the array, so calling key() won't return the correct key value; you must first position at end() of the array:

function array_add(&$array, $value) {
$array[] = $value; // add an element
end($array); // important!
return key($array);
}