последний ключ массива php

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

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

Вариант 1

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

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

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

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

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

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

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

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

На больших массивах также работает хорошо.

Эта опция сбивает внутренний указатель массива.

Вариант 7

В последних версиях PHP этот вариант стал очень медленным. Рекомендуется его избегать.

Этот вариант создан в надежде сохранить внутренний указатель массива (что является недостатком предыдущего варианта), но, к сожалению, на больших массивах работает сильно медленнее.

Вариант 8

На больших массивах также работает хорошо.

Из-за использования count рекомендуется использовать только на автоиндексируемых массивах.

Вариант 9

В последних версиях PHP этот вариант стал очень медленным. Рекомендуется его избегать.

Вариант 10

На больших массивах также работает хорошо.

Из-за того, что получение значения приводит к потере оригинального ключа рекомендуется использовать только на авто индексируемых массивах.

Заключение

Все рассмотренные ограничения снимаются новой функцией array_key_last, поэтому в конечном счёте рекомендует использовать именно её.

Источник

Как получить Последний ключ в массиве?

Как я могу получить Последний ключ массива?

16 ответов

решением было бы использовать комбинацию end и key (цитирую) :

Итак, часть кода, такая как этот, должна сделать трюк :

т. е. ключ последнего элемента моего массива.

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

хотя end() кажется, самый простой, это не самый быстрый.

более быстрая, и гораздо более сильная альтернатива array_slice()

вычеркнуть редактором: это утверждение не было обосновано и в комментариях были упомянуты доказательства обратного. Если они есть клочок истины к утверждениям этого плаката о скорости / эффективности, то необходимо обеспечить контрольное испытание.

Не знаю, будет ли это быстрее или нет, но кажется проще сделать это таким образом, и вы избегаете ошибки, не передавая функцию в end().

ему просто нужна переменная. не так уж важно написать еще одну строку кода, а затем отменить ее, если вам нужно.

Я также хотел бы предложить альтернативное решение этой проблемы.

предполагая, что все ваши ключи числовые без каких-либо пробелов, мой предпочтительный метод-подсчитать массив, затем минус 1 от этого значения (чтобы учесть тот факт, что ключи массива начинаются с 0.

Вы можете использовать это:

другое решение-создать функцию и использовать:

Я просто взял вспомогательную функцию от Xander и улучшил ее с ответами раньше:

по состоянию на PHP7.3 вы можете напрямую получить доступ к последнему ключу (внешний уровень) массива с array_key_last()

это означает, что вы можете получить значение конечного ключа без:

эта функция была давно просроченное и приветствуемое добавление к поясу инструмента функции массива который улучшает представление, избегает излишних побочных эффектов, и включает чистый/сразу/интуитивный код.

вот некоторые соответствующие страницы обсуждения новых особенности:

Источник

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

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