PHP 內建 end() 函式可將陣列內部指標直接移至最後一個元素並回傳其值,是取得尾端元素最簡潔、效能最佳的方式。
<?php
$args = ['www', 'phpernote', 'com'];
echo end($args); // 輸出: com
?>
false。current()、next()、prev() 等操作會受影響。<?php
$arr = ['a', 'b', 'c'];
$last = $arr[count($arr) - 1]; // 索引陣列適用
$last = $arr[array_key_last($arr)]; // PHP 7.3+,適用所有陣列(保留指標)
?>
<?php
$arr = ['foo' => 'bar', 'baz' => 'qux'];
$lastKey = array_key_last($arr); // 'baz' (PHP 7.3+)
?>
<?php
function getDeepLast($array) {
$current = $array;
while (is_array($current) && count($current) > 0) {
$key = array_key_last($current);
$current = $current[$key];
}
return $current;
}
?>
| 方法 | 相對耗時 | 備註 |
|---|---|---|
end($arr) | 1.0x (基準) | 最快,但改變指標 |
$arr[count($arr)-1] | 1.2x | 僅限數字索引連續陣列 |
$arr[array_key_last($arr)] | 1.3x | PHP 7.3+,不改指標,通用性最佳 |
array_pop($arr) | 2.5x | 會移除元素,慎用 |
end([]) 回傳 false,若元素值可能為 false/0/'',請用 === false 判斷。end() 需接受變數參考,end(['a','b']) 會報錯「Only variables can be passed by reference」。end() 僅支援陣列,ArrayObject、Generator 等需轉陣列或用 iterator_to_array()。