Voting

: zero plus eight?
(Example: nine)

The Note You're Voting On

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.

<?php

function array_key_last_1(array $array) {
// assert(!empty($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;
}

<< Back to user notes page

To Top