Как сравнить массив по типу и значению ключей на основе первого массива?

Как сравнить массив $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

ПЕСОЧНИЦА

→ Ссылка