Pas*_*TIN 599
end() 将数组的内部指针前进到最后一个元素,并返回其值. key() 返回当前数组位置的索引元素. 因此,像这样的代码的一部分应该做的伎俩:
$array = array(
'first' => 123,
'second' => 456,
'last' => 789,
);
end($array); // move the internal pointer to the end of the array
$key = key($array); // fetches the key of the element pointed to by the internal pointer
var_dump($key);
Run Code Online (Sandbox Code Playgroud)
将输出:
string 'last' (length=4)
Run Code Online (Sandbox Code Playgroud)
即我的数组的最后一个元素的键.
完成此操作后,数组的内部指针将位于数组的末尾.正如评论中指出的那样,您可能希望reset()在数组上运行以将指针返回到数组的开头.
Tad*_*jna 72
虽然end()看起来最简单,但并不是最快的.
更快,更强大的选择是 array_slice()
编辑罢工:这一说法没有得到证实,评论中提到了相反的证据.如果这张海报关于速度/效率的断言有任何真相,那么必须提供基准测试.
$lastKey = key(array_slice($array, -1, 1, true));
Run Code Online (Sandbox Code Playgroud)
Rut*_*ren 50
我更喜欢
end(array_keys($myarr))
Run Code Online (Sandbox Code Playgroud)
Pat*_*ski 45
自PHP 7.3 (2018)以来,(最终)有这样的功能:http: //php.net/manual/en/function.array-key-last.php
$array = ['apple'=>10,'grape'=>15,'orange'=>20];
echo array_key_last ( $array )
Run Code Online (Sandbox Code Playgroud)
将输出
orange
Run Code Online (Sandbox Code Playgroud)
小智 30
只需使用: echo $array[count($array) - 1];
小智 20
不知道这是否会更快或更快,但这样做似乎更容易,并且通过不将函数传递给end()来避免错误...
它只需要一个变量......编写一行代码并不是什么大不了的事,如果你需要,可以取消它.
$array = array(
'first' => 123,
'second' => 456,
'last' => 789,
);
$keys = array_keys($array);
$last = end($keys);
Run Code Online (Sandbox Code Playgroud)
mic*_*usa 11
从PHP7.3开始,您可以使用array_key_last()直接访问数组(外层)中的最后一个键
这意味着您无需检索最终密钥的值:
这个功能早就应该是阵列功能工具带的一个受欢迎的附加功能,可以提高性能,避免不必要的副作用,并实现干净/直接/直观的代码.
这是一个演示:
array_slice() + key(): 1.4
end() + key(): 13.7
array_key_last(): 0.00015
Run Code Online (Sandbox Code Playgroud)
输出:
$array = ["a" => "one", "b" => "two", "c" => "three"];
if (!function_exists('array_key_last')) {
echo "please upgrade to php7.3";
} else {
echo "First Key: " , key($array) , "\n";
echo "Last Key: " , array_key_last($array) , "\n";
next($array); // move array pointer to second element
echo "Second Key: " , key($array) , "\n";
echo "Still Last Key: " , array_key_last($array);
}
Run Code Online (Sandbox Code Playgroud)
一些说明:
array_key_last()是array_key_first()的兄弟函数.null如果数组为空,则两个函数都返回.array_value_first()&array_value_last())也会提供指针无知访问书挡元素,但他们显然未能获得足够的投票来生活.以下是一些讨论新功能的相关页面:
从 PHP >= 7.3 开始,array_key_last()是获取任何数组的最后一个键的最佳方法。使用end(),key()和 的组合reset()来获取数组的最后一个键是令人发指的。
$array = array("one" => bird, "two" => "fish", 3 => "elephant");
$key = array_key_last($array);
var_dump($key) //output 3
Run Code Online (Sandbox Code Playgroud)
将其与
end($array)
$key = key($array)
var_dump($key) //output 3
reset($array)
Run Code Online (Sandbox Code Playgroud)
如果您使用end()和key()
尝试使用array_pop和array_keys函数,如下所示:
<?php
$array = array(
'one' => 1,
'two' => 2,
'three' => 3
);
echo array_pop(array_keys($array)); // prints three
?>
Run Code Online (Sandbox Code Playgroud)