У меня есть «главный» массив, и несколько массивов я должен проверить против хозяина.
Главный массив представляет собой список пар ключ / значение. Другие массивы должны быть сделаны из некоторых (или всех) этих пар, ничего другого .
Вот несколько примеров для пояснения:
$master = [1=>'foo', 2=>'bar', 3=>'baz']; $good_child = [2=>'bar']; $wrong_child_1 = [2=>'sparta']; $wrong_child_2 = [42=>'bar'];
В настоящее время я делаю проверку с помощью этой быстрой части кода:
foreach ($child as $key => $value) { if ($master[$key] !== $value) { // wrong child } }
Вы уже, возможно, заметили, что с ошибкой $wrong_child_2
(неопределенный индекс) это не $wrong_child_2
, хотя это не проблема в реальном приложении (по крайней мере пока).
Мой вопрос в том, будет ли лучший способ сделать эти проверки? Предпочтительно без циклов, а скорее массивные функции.
Посмотрите на array_diff_assoc
.
$bad = (bool)count(array_diff_assoc($test_array, $master_array))
Другими словами, $test_array
не проверяет наличие различий, включая проверку индекса.