Array values: примеры (PHP)
array_values(array $array): arrayФункция 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 существуют другие функции для работы с ключами и значениями массивов:
- array_keys() — возвращает все ключи массива или подмножество ключей для заданного значения.
- array_flip() — меняет местами ключи и значения массива. Может использоваться для получения значений, но с изменением их роли на ключи.
- iterator_to_array() — преобразует объект-итератор в массив. Позволяет получить значения, если исходные данные являются итератором.
Функцию array_values() предпочтительнее использовать, когда требуется именно простой список значений без сохранения оригинальных ключей. array_keys() применяется, когда важны ключи. array_flip() полезна для обмена ролями ключей и значений, но может приводить к потере данных при не уникальных значениях.
В версиях 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.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 и выдавалось предупреждение.
- В более ранних версиях не было значительных изменений в поведении.
Функция работает только на первом уровне вложенности.
$multi = [
'фрукты' => ['яблоко', 'апельсин'],
'овощи' => ['морковь', 'помидор']
];
$result = array_values($multi);
print_r($result);Array
(
[0] => Array
(
[0] => яблоко
[1] => апельсин
)
[1] => Array
(
[0] => морковь
[1] => помидор
)
)$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_values() исправляет это.
$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
)Функция работает с объектами, которые могут быть обработаны как массивы.
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
В контексте СУБД, аналогом можно считать получение значений из столбца результата запроса, но это концептуально иная операция.