Я думаю, что это то, что вы ищете.
Используя ваши образцы данных, выполните цикл для внешних массивов, затем каждый раз используйте array_diff_assoc
для пользователей. (Обратите внимание, это предполагает, что когда есть разница, array_diff_assoc
возвращает значение из второго переданного массива, что, как кажется, и происходит).
<?php
$user1 = array("public" => 1, "private" => 1, "secret" => 1);
$user2 = array("public" => 1, "private" =>1, "secret" => 1);
$array1 = array ("user 1"=>$user1, "user 2"=>$user2);
$user1 = array("public" => 1, "private" => 0, "secret" => 1);
$user2 = array("public" => 1, "private" => 1, "secret" => 1);
$array2 = array("user 1"=>$user1, "user 2"=>$user2);
$results = array();
foreach ( $array1 as $user => $value )
{
$diff = array_diff_assoc( $array1[$user], $array2[$user] );
if ($diff) {
array_push($results,array($user=>$diff));
}
}
print_r($results);
?>
Возвращает:
Array
(
[0] => Array
(
[user 1] => Array
(
[private] => 1
)
)
)