Array values: примеры (PHP)

Функция array_values: извлечение данных из массивов PHP
Раздел: Работа с массивами
array_values(array $array): array
Описание функции array_values

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

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

Аргументы функции

array_values() принимает только один параметр:

  • array (обязательный) — исходный массив, значения которого необходимо извлечь.

Аргумент должен быть массивом. Начиная с PHP 8.0.0, передача не массива вызывает ошибку TypeError.

Базовые примеры использования
Пример с ассоциативным массивом
$assoc = ['a' => 'яблоко', 'b' => 'банан', 'c' => 'вишня'];
$result = array_values($assoc);
print_r($result);
Array
(
    [0] => яблоко
    [1] => банан
    [2] => вишня
)
Пример с массивом, содержащим пропуски в индексах
$sparse = [2 => 'A', 5 => 'B', 10 => 'C'];
$result = array_values($sparse);
print_r($result);
Array
(
    [0] => A
    [1] => B
    [2] => C
)
Похожие функции в PHP

В PHP существуют другие функции для работы с ключами и значениями массивов:

  • array_keys() — возвращает все ключи массива или подмножество ключей для заданного значения.
  • array_flip() — меняет местами ключи и значения массива. Может использоваться для получения значений, но с изменением их роли на ключи.
  • iterator_to_array() — преобразует объект-итератор в массив. Позволяет получить значения, если исходные данные являются итератором.

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

Типичные ошибки
Передача не массива (до PHP 8)

В версиях PHP до 8.0 функция возвращала null и вызывала предупреждение, если передан не массив.

// PHP 7
$result = array_values('строка');
var_dump($result);
Warning: array_values() expects parameter 1 to be array, string given
NULL
Передача не массива (PHP 8 и выше)

В PHP 8.0 и новее возникает ошибка TypeError.

// PHP 8
$result = array_values('строка');
Fatal error: Uncaught TypeError: array_values(): Argument #1 ($array) must be of type array, string given
История изменений
  • В PHP 8.0.0 функция теперь вызывает ошибку TypeError, если параметр `array` не является массивом. Ранее возвращался null и выдавалось предупреждение.
  • В более ранних версиях не было значительных изменений в поведении.
Расширенные примеры
Использование с многомерным массивом

Функция работает только на первом уровне вложенности.

Пример php
$multi = [
    'фрукты' => ['яблоко', 'апельсин'],
    'овощи' => ['морковь', 'помидор']
];
$result = array_values($multi);
print_r($result);
Array
(
    [0] => Array
        (
            [0] => яблоко
            [1] => апельсин
        )
    [1] => Array
        (
            [0] => морковь
            [1] => помидор
        )
)
Комбинация с array_unique для получения уникальных значений
Пример php
$dup = ['a', 'b', 'a', 'c', 'b'];
$uniqueValues = array_values(array_unique($dup));
print_r($uniqueValues);
Array
(
    [0] => a
    [1] => b
    [2] => c
)
Применение после array_filter для переиндексации

array_filter() сохраняет ключи, что может привести к пропускам индексов. array_values() исправляет это.

Пример php
$nums = [0, 1, 2, 3, 4];
$filtered = array_filter($nums, fn($n) => $n % 2 === 0);
print_r($filtered);
$reindexed = array_values($filtered);
print_r($reindexed);
Array
(
    [0] => 0
    [2] => 2
    [4] => 4
)
Array
(
    [0] => 0
    [1] => 2
    [2] => 4
)
Использование с объектами, реализующими интерфейс ArrayAccess

Функция работает с объектами, которые могут быть обработаны как массивы.

Пример php
class MyArrayAccess implements ArrayAccess {
    private $data = ['key1' => 'val1', 'key2' => 'val2'];
    // Реализация методов ArrayAccess...
}
$obj = new MyArrayAccess();
$values = array_values($obj); // Работает, если объект ведет себя как массив
print_r($values);
Array
(
    [0] => val1
    [1] => val2
)
Аналоги в других языках программирования

Array values в Javascript

Метод Object.values() возвращает массив значений перечисляемых свойств объекта.

const obj = { a: 'apple', b: 'banana', c: 'cherry' };
console.log(Object.values(obj));
['apple', 'banana', 'cherry']

Array values в Python

Для словаря (dict) метод dict.values() возвращает объект view, который можно преобразовать в список.

d = {'a': 'apple', 'b': 'banana', 'c': 'cherry'}
print(list(d.values()))
['apple', 'banana', 'cherry']

Array values в MySQL

В контексте СУБД, аналогом можно считать получение значений из столбца результата запроса, но это концептуально иная операция.

PHP array_values function comments

En
Array values Return all the values of an array