array array_diff_assoc ( array array1, array array2 [, array ...] )
다른 배열에 없는 원소만으로 구성된 배열을 반환한다. array_diff()와는 달리 원소의 키와 값이 모두 일치하는 원소를 제거한다.

array_diff_assoc()는 인자로 반듯이 2개 이상을 배열을 받아야 한다.
array1 배열에서 다른 배열에는 존재하지 않는 원소만으로 구성된 새로운 배열을 반환한다. 이때 array1에서 제거되는 원소는 다른 배열에서 키와 값을 모두 비교하여 일치하는 원소를 제거하며 하나만 일치하는 것을 제거하지 않는다.

이때 첫 번째 배열로부터 추려진 원소는 원래 배열(array1)에서 가지고 있던 키를 그대로 가지게 된다.

예제1

<?
$foods1 = array("food" => "pizza", "cola", "pasta", "fruit" => "apple");
$foods2 = array("hamburger", "pasta", "fruit" => "apple", "cola");

$d_foods = array_diff($foods1, $foods2);
while(list($key, $food) = each($d_foods)) {
echo "\$dfoods[$key] : " . $food . "<br>";
}
/*
$dfoods[food] : pizza
*/

// $foods1 배열의 원소 중에서 $foods2 배열의 원소와 키나 값이 다른 원소만을 배열로 반환한다.
$diff_foods = array_diff_assoc($foods1, $foods2);
while(list($key, $food) = each($diff_foods)) {
echo "\$foods[$key] : " . $food . "<br>";
}
/*
$foods[food] : pizza
$foods[0] : cola
*/
?>