Отрицательный индекс массива в PHP

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

Итак, какова цель использования этих отрицательных показателей? И когда я должен его использовать?

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

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

 $arr = array(-1 => 5); echo $arr[-1]; 

Некоторые стандартные функции библиотеки PHP (те, которые ожидают регулярные массивы с только натуральными целыми индексами), однако, принимают отрицательные смещения, чтобы означать «подсчет с конца, а не на начало». array_slice – один из таких примеров.

Отрицательные индексы массивов не имеют специального значения (т. Е. Получают последний / второй последний элемент и т. Д.) В PHP. Чтобы получить последний элемент массива, используйте:

 $last = end($array); 

Чтобы получить второй последний, добавьте:

 $secondLast = prev($array); 

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

 reset($array); 

Начиная с 7.1 , мы имеем важный и практичный частный случай, т. Е. При использовании синтаксиса массива для доступа к определенным символам строки с обратной стороны :

 $str = "123"; $empty = ""; echo "LAST CHAR of str == '$str[-1]'<br>"; // '3' echo "LAST CHAR of empty == '$empty[-1]'<br>"; // '', Notice: Uninitialized string offset: -1