Перейти к содержимому

Как вывести последний элемент массива php

  • автор:

Как получить последний элемент массива в PHP

Имеется много способов извлечь последний элемент массива в PHP скрипте. Они различаются своим воздействием на массив (могут удалять извлечённый элемент, либо сдвигать указатель), а также своей производительностью.

Вариант 1

Начиная с PHP 7.3 наконец-то добавлена специальная функция, которая получает последний ключ массива, это функция array_key_last.

Обратите внимание, что извлекается не последний элемент массива, а именно последний ключ, поэтому для получения самого последнего члена массива эту функцию нужно использовать следующим образом:

$x = $array[array_key_last($array)];

Бенчмарки производительности показывают, что это самый быстрый вариант, поэтому рекомендуется использовать именно его.

Поскольку PHP 7.3 на момент написания является совсем недавним стабильным релизом, то эта версия доступна ещё не на всех серверах. Для достижения совместимости, рекомендуется использовать следующий код:

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]; > >

Этот код проверяет, доступна ли функция array_key_last. Если эта функция недоступна, то создаётся пользовательская функция с таким же именем, которая выполняет это же самое действие. Результатом этого будет то, что на PHP версии 7.3 и более поздних будет использоваться оригинальная функция array_key_last, а на более старых версиях будет задействована пользовательская функция array_key_last.

Рассмотрим ещё варианты, которые подойдут для более старых версий PHP.

Некоторые из рассмотренных вариантов могут показаться излишне усложнёнными, но это сделано для того, чтобы убрать воздействие на массив. К примеру, нужное действие (получение последнего элемента массива) может выполнять функция array_pop, но она не используется сама по себе (хотя применяется в некоторых рассмотренных конструкциях), поскольку в результате её действия удаляется извлекаемый элемент.

Вариант 2

$x = array_values(array_slice($array, -1))[0];

Вариант 3

$x = array_slice($array, -1)[0];

Как получить последний элемент php массива

Смотря что подразумевается под словом «получить». Если нужно именно извлечь (получить элемент и уменьшить длину массива) последний элемент массива, то можно воспользоваться функцией array_pop() :

 $numbers = [1, 2, 3, 4]; $lastNumber = array_pop($numbers); print_r($numbers); //=> [1, 2, 3] // Исходный массив уменьшился на один элемент 

А если изменять исходный массив нельзя, то можно воспользоваться функцией array_key_last() . Эта функция получает ключ последнего элемента массива, а потом можно получить и сам последний элемент. Взгляните на пример:

 $numbers = [1, 2, 3, 4]; $lastNumber = $numbers[array_key_last($numbers)]; print_r($numbers); //=> [1, 2, 3, 4] // Исходный массив при этом не изменился 

08 ноября 2022

Поиск последнего элемента PHP массива с помощью функции count() .

Подсчитывает количество элементов массива.

 $numbers = ['one', 'two', 'three', 'four']; $count = count($numbers); // => 4 $lastKey = count($numbers) - 1; // => 3 $lastValue = $numbers[$lastKey]; echo($lastValue); // => four 

array_pop

array_pop() извлекает и возвращает значение последнего элемента массива array , уменьшая размер array на один элемент.

Замечание: При вызове эта функция сбрасывает указатель массива, переданного параметром.

Список параметров

Массив, из которого берётся значение.

Возвращаемые значения

Возвращает значение последнего элемента массива array . Если array пуст, будет возвращён null .

Примеры

Пример #1 Пример использования array_pop()

$stack = array( «orange» , «banana» , «apple» , «raspberry» );
$fruit = array_pop ( $stack );
print_r ( $stack );
?>

После этого в $stack будет только 3 элемента:

Array ( [0] => orange [1] => banana [2] => apple )

и raspberry будет присвоено переменной $fruit .

Смотрите также

  • array_push() — Добавляет один или несколько элементов в конец массива
  • array_shift() — Извлекает первый элемент массива
  • array_unshift() — Добавляет один или несколько элементов в начало массива

User Contributed Notes 11 notes

10 years ago

Notice:
the complexity of array_pop() is O(1).
the complexity of array_shift() is O(n).
array_shift() requires a re-index process on the array, so it has to run over all the elements and index them.

2 years ago

Note that array_pop doesn’t issue ANY warning or error if the array is already empty when you try to pop something from it. This is bizarre! And it will cause cascades of errors that are hard to resolve without knowing the real cause.

Rather than an error, it silently returns a NULL object, it appears, so in my case I ended up with warnings elsewhere about accessing elements of arrays with invalid indexes, as I was expecting to have popped an array. This behaviour (and the lack of any warning, when many trivial things are complained about verbosely) is NOT noted in the manual above. Popping an already empty stack should definitely trigger some sort of notice, to help debugging.

Sure, it’s probably good practice to wrap the pop in an if (count($array)) but that should be suggested in the manual, if there’s no error returned for trying something that should fail and obviously isn’t expected to return a meaningful result.

15 years ago

I wrote a simple function to perform an intersect on multiple (unlimited) arrays.

Pass an array containing all the arrays you want to compare, along with what key to match by.

function multipleArrayIntersect ( $arrayOfArrays , $matchKey )
<
$compareArray = array_pop ( $arrayOfArrays );

foreach( $compareArray AS $key => $valueArray ) <
foreach( $arrayOfArrays AS $subArray => $contents ) <
if (! in_array ( $compareArray [ $key ][ $matchKey ], $contents )) <
unset( $compareArray [ $key ]);
>
>
>

18 years ago

In a previous example .
function array_trim ( $array , $index ) if ( is_array ( $array ) ) unset ( $array [ $index ] );
array_unshift ( $array , array_shift ( $array ) );
return $array ;
>
else return false ;
>
>
?>

This have a problem. if u unset the last value and then use
array_unshift ( $array, array_shift ( $array ) );
?>

will return a : Array ( [0] => )
so u can fix it using.

if ( count ( $array ) > 0 ) array_unshift ( $values , array_shift ( $values ) );
?>

good luck 😉

20 years ago

alex.chacon@terra.com
Hi
Here there is a function that delete a elemente from a array and re calculate indexes

function eliminarElementoArreglo ( $array , $indice )
<
if ( array_key_exists ( $indice , $array ))
<
$temp = $array [ 0 ];
$array [ 0 ] = $array [ $indice ];
$array [ $indice ] = $temp ;
array_shift ( $array );

//reacomodamos ?ndices
for ( $i = 0 ; $i < $indice ; $i ++)
<
$dummy = $array [ $i ];
$array [ $i ] = $temp ;
$temp = $dummy ;
>
>
return $array ;
>
?>

16 years ago

I had a problem when using this function because my array was made up entirley of numbers, so I have made my own function. Hopefully it will be useful to somebody.

Как извлечь последний элемент php массива

Существует множество способов решения данной задачи. Я расскажу о парочке из них.

Если массив не нужно никак модифицировать, то можно использовать функцию array_key_last() , которая возвращает индекс последнего элемента. Лучше сразу взглянуть на пример:

 $words = ['hexlet', 'potato', 'green']; $lastItem = $words[array_key_last($words)]; print_r($lastItem); // => 'green' 

Также можно использовать встроенную функцию array_pop() . Она извлекает последний элемент и возвращает его значение, но нужно помнить о том, что при этом исходный массив уменьшается на один элемент.

 $words = ['hexlet', 'potato', 'green', 'smith']; $lastItem = array_pop($words); print_r($lastItem); //=> 'smith' print_r($words); //=> ['hexlet', 'potato', 'green'] 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *