W3docs

pos()

Функция pos() в PHP возвращает значение текущего элемента массива по внутреннему указателю. Это псевдоним функции current().

В PHP функция pos() является встроенной функцией для работы с массивами, которая возвращает значение элемента, на который указывает внутренний указатель массива. Каждый массив PHP имеет внутренний указатель, отслеживающий «текущий» элемент; pos() считывает значение под этим указателем, не перемещая его.

pos() является псевдонимом функции current(), и обе функции ведут себя идентично. Поскольку псевдонимы могут быть устаревшими или удалёнными в будущих версиях PHP, в новом коде предпочтительнее использовать current() — функция pos() задокументирована здесь главным образом для того, чтобы вы могли распознать её в устаревших проектах.

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

Синтаксис функции pos()

pos() принимает один аргумент — массив для проверки — и возвращает значение элемента, на который в данный момент указывает внутренний указатель.

pos(array $array): mixed
  • $array — массив для чтения. Он передаётся по ссылке, поэтому переменная массива должна быть присваиваемой (нельзя передать литерал).
  • Возвращаемое значение — значение текущего элемента или false, если массив пуст или указатель вышел за пределы последнего элемента.

Поскольку элемент может правомерно содержать значение false, никогда не используйте возвращаемое значение отдельно для проверки «произошёл ли сбой?». Используйте key() (который возвращает null за пределами конца) когда нужно надёжно обнаружить конец массива.

Примеры использования функции pos()

Рассмотрим несколько практических примеров того, как функцию pos() можно использовать для получения значения по текущей позиции внутреннего указателя.

Пример использования функции pos()

<?php

$colors = ['red', 'green', 'blue'];

// Set the current position to the first element
reset($colors);

// Retrieve the value of the element at the current position
echo pos($colors) . '-'; // Output: red

// Move the current position to the next element
next($colors);

// Retrieve the value of the element at the current position
echo pos($colors) . '-'; // Output: green

// Move the current position to the next element
next($colors);

// Retrieve the value of the element at the current position
echo pos($colors); // Output: blue

В этом примере у нас есть массив $colors, содержащий три элемента. Мы устанавливаем внутренний указатель на первый элемент с помощью reset(), затем получаем значение на этой позиции с помощью pos(). Затем мы перемещаем указатель вперёд с помощью next() и снова считываем значение, повторяя это ещё раз, чтобы достичь последнего элемента. Главное: pos() сам по себе никогда не перемещает указатель — это делают только reset(), next(), prev() и end().

Чтение за пределами конца

После того как указатель перемещается за последний элемент, pos() возвращает false. Именно поэтому false неоднозначен как «текущее значение» — он может означать либо «элемент равен false», либо «мы вышли за пределы массива»:

php— editable, runs on the server

Когда вам действительно нужно знать, достигли ли вы конца, используйте pos() вместе с key(): key() возвращает null за последним элементом, тогда как реальный ключ (0, 1, …) означает, что указатель ещё действителен.

pos() и другие функции указателя

pos() — часть набора инструментов PHP для работы с внутренним указателем. Каждая функция выполняет отдельную роль:

ФункцияЧто делает
current()Возвращает текущее значение (стандартное имя; pos() — его псевдоним).
key()Возвращает текущий ключ вместо значения.
next()Перемещает указатель вперёд, затем возвращает новое текущее значение.
prev()Перемещает указатель назад, затем возвращает новое текущее значение.
reset()Отправляет указатель на первый элемент.
end()Отправляет указатель на последний элемент.

Когда использовать внутренний указатель

Для большинства задач обхода массива цикл foreach является более понятным и безопасным решением — он вообще не затрагивает внутренний указатель массива. К pos()/current() и связанным функциям прибегают только тогда, когда нужен детальный ручной контроль над позицией: например, при проверке текущего элемента внутри цикла while (key($arr) !== null) или при обходе массива в двух направлениях. Если вам просто нужно перебрать все элементы по порядку, предпочтите foreach.

Заключение

Функция pos() возвращает значение по внутреннему указателю массива, не перемещая его, и является устаревшим псевдонимом current(). В новом коде предпочтительнее использовать current(); сочетайте её с next(), prev(), reset() и end() для ручного обхода массива — и помните, что возврат false может означать как значение false, так и конец массива, поэтому используйте key(), когда важно различать эти случаи.

Практика

Практика
Что такое правильное использование и функциональность функции pos() в PHP?
Что такое правильное использование и функциональность функции pos() в PHP?
Was this page helpful?