Как сравнить массив по типу и значению ключей на основе первого массива?
Как сравнить массив $arr2 массива на основе первого массива $arr1?
Ключи заранее незвестны.
К примеру если в массиве $arr2 есть все ключи из массива $arr1 и значения ключей тогоже типа то условие проходит проверку.
Ниже пример проверку не проходит
$arr1 = ['symbol' => 'EUR', 'sum' => 72.35, 'asset' => '1', 'active' => true];
$arr2 = ['symbol' => 'EUR', 'sum' => 73.21, 'asset' => '0'];
if ($arr1 === $arr2) {
// совпадают
} else {
// не совпадают
}
Ниже пример проверку проходит
$arr1 = ['symbol' => 'EUR', 'sum' => 74.25, 'asset' => 1, 'active' => true];
$arr2 = ['symbol' => 'EUR', 'sum' => 74.25, 'asset' => 1];
if ($arr1 === $arr2) {
// совпадают
} else {
// не совпадают
}
Ответы (1 шт):
Автор решения: Jigius
→ Ссылка
Я при подобных задачах использую ф-ю array_reduce():
<?php
$res =
array_reduce(
array_keys($arr2),
function($nonce, $key) use ($arr1, $arr2) {
return $nonce && gettype($arr1[$key]) === gettype($arr2[$key]);
},
true
);
?>
Проходим по всем ключам массива arr2 и сравниваем, для каждого, типы значений в обоих массивах. Результат - значение типа boolean