A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.php.net/manual/en/function.array-key-last.php below:

PHP: array_key_last - Manual

array_key_last

(PHP 7 >= 7.3.0, PHP 8)

array_key_lastGets the last key of an array

Parameters
array

An array.

Return Values

Returns the last key of array if the array is not empty; null otherwise.

See Also Anyvie at devlibre dot fr

7 years ago

For PHP <= 7.3.0 :

if (! function_exists("array_key_last")) {


function array_key_last($array) {
if (!is_array($array) || empty($array)) {
return NULL;
}

return array_keys($array)[count($array)-1];


}
}
github / k-gun

6 years ago

For those who loves tested candies;

<?php
function array_key_last(array $array) {
return key(array_slice($array, -1));
return key(array_reverse($array));
return array_keys($array)[count($array) - 1] ?? null;
}
?>

contact at duzun dot me

6 years ago

Try to beat this polyfill in terms of performance!

<?php
if( !function_exists('array_key_last') ) {
function
array_key_last(array $array) {
if( !empty(
$array) ) return key(array_slice($array, -1, 1, true));
}
}
if (!function_exists('array_key_first')) {
function
array_key_first(array $arr) {
foreach(
$arr as $key => $unused) return $key;
}
}
?>

webmaster at redinfo dot co dot kr

5 years ago

// if : php ver < 7
// array_key_last

$arr = array('1'=>'bear1','2'=>array('22'=>'bear22'),'3'=>'bear3');


echo end(array_keys($arr));

// result : 3

ccb_bc at hotmail dot com

6 years ago

<?php
function _array_key_last(array $array){
return (!empty(
$array)) ? array_keys($array)[count($array)-1] : null;
}
var_dump(_array_key_last(['PHP', 'Javascript', 'Python'])); ?>

@manzoorwanijk

6 years ago

For PHP < 7.3.0 :

Will work for any type of array

<?php
if ( ! function_exists( 'array_key_last' ) ) {
function array_key_last( $array ) {
$key = NULL;

if (

is_array( $array ) ) {end( $array );
$key = key( $array );
}

return

$key;
}
}
?>

dracveg at gmail dot com

4 years ago

Notice!

$a = array(


1 => 1,
0 => 0
);

echo (array_key_last($a)); // output: "0", not "1"

rnealxp at yahoo dot com

5 years ago

Now that we have this function, where we once used...
<?php
$idxLast
= count($arr) - 1;
?>
we can now optimize code speed by using...
<?php
$idxLast
= (array_key_last($arr) ?? 0);
?>
Use-cases include lots of looping and control-structures.
If you do not know ahead of time that the array is numerically indexed, and that it could possibly be associative...safer/faster to stick with count().

rotexdegba007-github at yahoo dot ca

6 years ago

This polyfill works for PHP 5.6+.
It is a slight modification of "wes at nospam dot example dot org"'s example:

<?phpif( !function_exists('array_key_first') ) {

function

array_key_first(array $array) {

if(

$array === [] ) { return NULL; }

foreach(

$array as $key => $_) { return $key; }
}
}

if( !

function_exists('array_key_last') ) {

function

array_key_last(array $array) {

if(

$array === [] ) { return null; }return array_key_first(array_slice($array, -1, null, true));
}
}

donaldinou at gmail dot com

4 years ago

Here come my benchmark, and

return key(array_slice($array, -1));

is the my best answer for a polyfill.

<?phpfunction array_key_last_1(array $array) {
return key(array_slice($array, -1));
}

function

array_key_last_2(array $array) {
return
key(array_slice($array, -1, 1, true));
}

function

array_key_last_3(array $array) {
return
key(array_reverse($array));
}

function

array_key_last_4(array $array) {
return
array_keys($array)[count($array) - 1] ?? null;
}

function

array_key_last_5(array $array) {
return
array_keys($array)[count($array) - 1] ?? null;
}

function

array_key_last_6(array $array) {
$copy = array_keys($array);
return
end($copy);
}
$result = array();
$array = range(0, 1000000);

for(

$i=1; $i < 7;$i++) {
$callback = 'array_key_last_' . $i;
$before = microtime(true);
call_user_func_array($callback, array($array));
$after = microtime(true);
$time = ($after-$before);
$result[$callback] = $time;
}
asort($result);
foreach (
$result as $key => $value) {
echo
'[' . $key . ']' . $value . " sec" . PHP_EOL;
}

wes at nospam dot example dot org

6 years ago

Correct polyfill (one that doesn't make copies of arrays, and that doesn't make use of the IAP) is:

<?phpif(!function_exists('array_key_first')){
function
array_key_first(array $array){
if(
$array === []){
return
NULL;
}
foreach(
$array as $key => $_) return $key;
}
}

if(!

function_exists('array_key_last')){
function
array_key_last(array $array){
if(
$array === []){
return
NULL;
}
return
array_key_first(array_slice($array, -1));
}
}
?>


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4