Pull to refresh

PHP: новые функции по работе с массивами (array_replace, array_walk_recursive и array_diff_assoc)

Level of difficulty Medium
Reading time 2 min
Views 66K
Итак, в феврале 2009 г. в языке PHP появились новые функции для работы с массивами: функции array_replace, array_walk_recursive и array_diff_assoc, что упрощает работу с массивами и сравнение их элементов.

Остановимся на каждой функции и дадим примеры их использования.



array_replace() — это функция в PHP, которая заменяет значения в первом массиве значениями из остальных массивов. Она принимает любое количество массивов и возвращает новый массив с замененными значениями. Например:

$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry');
$array2 = array('b' => 'blackberry', 'c' => 'coconut');
$array3 = array('d' => 'date');

$result = array_replace($array1, $array2, $array3);

print_r($result);


В этом примере функция array_replace() заменяет значения в массиве $array1 значениями из массивов $array2 и $array3. Результатом является новый массив:

Array
(
    [a] => apple
    [b] => blackberry
    [c] => coconut
    [d] => date
)


array_walk_recursive() — это функция в PHP, которая выполняет заданную пользователем функцию обратного вызова для каждого элемента массива, даже если он является массивом внутри массива. Она рекурсивно обходит все элементы массива и применяет функцию обратного вызова к каждому из них. Например:

$array = array(
    'name' => 'John',
    'address' => array(
        'street' => 'Main St.',
        'city' => 'New York'
    ),
    'phone' => '555-1234'
);

function printValue($value, $key) {
    echo "$key: $value\n";
}

array_walk_recursive($array, 'printValue');


В этом примере функция array_walk_recursive() применяет функцию printValue() к каждому элементу массива $array, включая элементы вложенных массивов. Результатом будет вывод на экран:


name: John
street: Main St.
city: New York
phone: 555-1234


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

$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry');
$array2 = array('b' => 'banana', 'c' => 'coconut', 'd' => 'date');

$result = array_diff_assoc($array1, $array2);

print_r($result);


В этом примере функция array_diff_assoc() сравнивает массивы $array1 и $array2 и возвращает новый массив, содержащий только те элементы, которые есть только в $array1. Результатом будет новый массив:

Array
(
    [a] => apple
    [c] => cherry
)


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

Кроме array_diff_assoc(), существуют и другие функции для сравнения массивов в PHP, такие как array_diff(), array_intersect(), array_intersect_assoc() и другие. Каждая из них используется в зависимости от того, какие элементы нужно найти в массивах.
Tags:
Hubs:
+199
Comments 414
Comments Comments 414

Articles