Общий список функций для работы с ассоциативными массивами довольно большой. Можно выделить несколько функций, которые встречаются во всех языках программирования, где есть ассоциативные массивы.
array_keys
Функция array_keys
извлекает из ассоциативного массива ключи и создает из них массив.
<?php
$data = ['first_name' => 'Mark', 'last_name' => 'Smith'];
$keys = array_keys($data);
// ['first_name', 'last_name']
Типичное применение данной функции в языках отличных от PHP — обход ассоциативного массива:
<?php
$data = ['first_name' => 'Mark', 'last_name' => 'Smith'];
$keys = array_keys($data);
foreach($keys as $key) {
print_r($data[$key]);
}
В PHP то же самое делается прямым обходом ассоциативного массива, но знать про функцию все равно полезно. Например, в формате JSON (как и в языках, отличных от PHP) массив и ассоциативный массив — разные типы данных.
{
"autoload": {
"files": [
"src/Arrays.php"
]
},
"config": {
"vendor-dir": "/composer/vendor"
}
}
Выше files
— обычный массив, а config
— ассоциативный.
array_values
Функция array_values
извлекает из ассоциативного массива значения и создает из них массив.
<?php
$data = ['first_name' => 'Mark', 'last_name' => 'Smith'];
$values = array_values($data);
// ['Mark', 'Smith']
array_merge
Наиболее интересная функция — array_merge
или так называемое слияние. Слияние двух массивов порождает новый массив, в котором поверх первого массива накладывается второй по следующим правилам:
- Если в первом массиве есть ключ, которого нет во втором, то он остаётся
- Если в первом и во втором массиве есть один и тот же ключ, то его значением становится значение из второго массива
- Если в первом массиве нет ключа, который есть во втором, то он добавляется
Операция слияния не коммутативна, так же, как и вычитание. Изменение порядка аргументов (перемена массивов) приведёт к другому результату.
<?php
$data1 = [
'first_name' => 'Mark',
'last_name' => 'Polo',
];
$data2 = [
'last_name' => 'Brin',
'age' => 15,
];
$result = array_merge($data1, $data2);
// [
// 'first_name' => 'Mark',
// 'last_name' => 'Brin',
// 'age' => 15,
// ]
Эта функция умеет работать с большим количеством массивов, но принцип остается тот же. При совпадении ключа в нескольких массивах, значение становится то, которое находилось в последнем массиве:
<?php
$data1 = [
'first_name' => 'Mark',
'last_name' => 'Polo',
];
$data2 = [
'last_name' => 'Brin',
'age' => 15,
];
$data3 = [
'last_name' => 'Twain',
];
$result = array_merge($data1, $data2, $data3);
// [
// 'first_name' => 'Mark',
// 'last_name' => 'Twain',
// 'age' => 15,
// ]
print_r($result);
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.