W3docs

PHP Функция array_values: Подробное Руководство

Подробное руководство по функции array_values() в PHP: синтаксис, примеры использования и сравнение со связанными функциями.

Функция array_values() возвращает все значения array, переиндексируя их с последовательными целочисленными ключами, начиная с 0. Это одна из простейших и наиболее часто используемых вспомогательных функций для работы с array в PHP: если в array есть пропуски в ключах или строковые ключи, которые больше не нужны, array_values() возвращает чистый array в виде списка. На этой странице рассматриваются синтаксис функции, ситуации, когда её стоит применять, сравнение со связанными функциями, а также рабочие примеры.

Что такое функция array_values()?

array_values() — это встроенная функция PHP, которая принимает array и возвращает новый array, содержащий все его значения. Исходный array остаётся неизменным. Возвращаемый array всегда использует последовательные целочисленные ключи (0, 1, 2, …), а оригинальные ключи — как строковые, так и непоследовательные целочисленные — отбрасываются. Относительный порядок значений сохраняется.

Синтаксис и возвращаемое значение

array_values(array $array): array
  • $array — входной array, значения которого нужно извлечь.
  • Возвращает индексированный array со всеми значениями, переиндексированными с 0.

Как работает array_values()?

Синтаксис прост. Вот базовый пример:

php— editable, runs on the server

Результат выполнения этого кода:

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

Как видно, функция array_values() принимает входной array $input и возвращает новый array $output, содержащий все значения $input, с новыми числовыми ключами, начиная с нуля. Оригинальные ключи входного array отбрасываются.

Зачем использовать array_values()?

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

Ещё один вариант применения array_values() — когда нужно удалить ключи из array, сохранив при этом порядок значений. При вызове array_values() на исходном array новый array будет иметь тот же порядок элементов, что и исходный, но с числовыми ключами, начиная с нуля.

Сравнение array_values() с другими функциями PHP

Помимо array_values(), в PHP есть другие функции, выполняющие схожие задачи. Краткое сравнение:

  • array_keys(): Возвращает array всех ключей входного array — зеркальное отображение array_values().
  • array_flip(): Меняет местами все ключи и соответствующие им значения.
  • array_combine(): Создаёт новый array, используя один array в качестве ключей, а другой — в качестве значений.
  • array_column(): Возвращает значения из одного столбца многомерного array.

Хотя эти функции полезны сами по себе, они применяются в разных случаях. array_keys() и array_flip() работают с ключами array, тогда как array_combine() объединяет два array в один. Подробнее о array в целом смотрите в главе PHP Arrays.

Лучшие практики использования array_values()

Несколько советов и рекомендаций по эффективному использованию array_values():

  • Помните, что array_values() отбрасывает оригинальные ключи входного array. Если нужно сохранить ключи, используйте другую функцию, например array_keys().
  • Если у вас есть array с непоследовательными ключами, используйте array_values() для создания нового array с последовательными ключами перед выполнением операций, требующих последовательности.
  • Используйте array_values() для удаления ключей из array с сохранением порядка значений.
  • При работе с большими array учитывайте, что создание нового array с помощью array_values() может потреблять значительный объём памяти. В таких случаях рассмотрите альтернативные методы, не требующие создания нового array.
  • Используйте осмысленные соглашения об именовании переменных, чтобы код был более читаемым и понятным.

Практические примеры использования array_values()

Рассмотрим несколько практических примеров использования array_values() в PHP-коде.

Пример 1: Удаление нечисловых ключей из array

Предположим, у вас есть ассоциативный array с нечисловыми ключами, и вы хотите удалить эти ключи и создать новый array с последовательными числовыми ключами. Вот как это можно сделать с помощью array_values():

Использование функции array_values в PHP с ассоциативным array

php— editable, runs on the server

Результат выполнения этого кода:

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
    [3] => date
)

Как видно, array_values() создал новый array с последовательными числовыми ключами, отбросив оригинальные нечисловые ключи.

Пример 2: Переиндексация array после фильтрации

Это наиболее распространённый практический вариант применения array_values(). Такие функции, как array_filter(), сохраняют оригинальные ключи, поэтому при удалении элементов в нумерации возникают пропуски. Последующий вызов array_values() даст чистый список без пропусков:

Переиндексация array в PHP после array_filter()

php— editable, runs on the server

Результат выполнения этого кода:

Array
(
    [2] => 10
    [3] => 15
    [4] => 20
)
Array
(
    [0] => 10
    [1] => 15
    [2] => 20
)

Обратите внимание: array_filter() сохраняет оригинальные ключи 2, 3 и 4, тогда как array_values() сбрасывает их до 0, 1 и 2. Это важно, если впоследствии array будет закодирован в JSON (целочисленные ключи с пропусками превратятся в JSON object вместо array) или если вы обращаетесь к элементам по позиции.

Заключение

array_values() возвращает новый переиндексированный array, содержащий все значения входного array, и отбрасывает оригинальные ключи. Используйте эту функцию всякий раз, когда нужен чистый array в виде списка — чаще всего после операций фильтрации, удаления или сортировки, оставляющих непоследовательные ключи. Помните, что функция никогда не изменяет исходный array, а создаваемая ею копия для очень больших array имеет ненулевую стоимость по памяти.

Практика

Практика
Для чего используется функция array_values() в PHP?
Для чего используется функция array_values() в PHP?
Was this page helpful?