array_udiff не работает как ожидалось

У меня есть два массива объектов.
Что я хочу сделать, чтобы найти различия, основанные на определенном атрибуте объекта, если другой атрибут равен.

Сокращенная версия моего кода ( видимая здесь );

<?php echo "Testing\n"; $aud1 = new stdClass(); $aud1->code = 'Z1'; $aud1->sub_list = '2, 3, 1'; $aud2 = new stdClass(); $aud2->code = 'Z2'; $aud2->sub_list = '2, 4, 1'; $aud3 = new stdClass(); $aud3->code = 'Z3'; $aud3->sub_list = '2, 3, 1'; $aud4 = new stdClass(); $aud4->code = 'Z2'; $aud4->sub_list = '2, 3, 1'; $array1 = array( $aud1, $aud3 ); $array2 = array( $aud2, $aud4 ); echo "\nsample A\n"; print_r($array1); echo "\nsample B\n"; print_r($array2); $arrdiff1 = array_values(array_udiff($array1, $array2, 'myDiff')); echo "\nIn A but not in B\n"; print_r($arrdiff1); $arrdiff2 = array_values(array_udiff($array2, $array1, 'myDiff')); echo "\nIn B but not in A\n"; print_r($arrdiff2); function myDiff($a, $b) { if ($a->code == $b->code) { return strcmp($a->sub_list, $b->sub_list); } else { return 0; } } ?> 

Я ожидаю увидеть разницу, где A – Z2 2,3,1, а B – Z2 2,4,1

Почему это не показано?

ОБНОВИТЬ
Как говорит @pilsetnieks , я перепутал свои элементы – недостаточно кофе.

BUt Я смущен, почему не появляется в $ arraDiff1.
Обновлен код здесь .