Использование array_intersect для многомерного массива

У меня есть два массива, которые выглядят так:

Array ( [0] => Array ( [name] => STRING [value] => STRING ) [1] => Array ( [name] => STRING [value] => STRING ) [2] => Array ( [name] => STRING [value] => STRING ) ) 

и я хотел бы иметь возможность реплицировать array_intersect, сравнивая идентификатор вспомогательных массивов в двух основных массивах. До сих пор я не добился успеха в своих попытках. 🙁

Используйте array_uintersect() для использования пользовательской функции сравнения, например:

 $arr1 = array( array('name' => 'asdfjkl;', 'value' => 'foo'), array('name' => 'qwerty', 'value' => 'bar'), array('name' => 'uiop', 'value' => 'baz'), ); $arr2 = array( array('name' => 'zxcv', 'value' => 'stuff'), array('name' => 'asdfjkl;', 'value' => 'foo'), array('name' => '12345', 'value' => 'junk'), array('name' => 'uiop', 'value' => 'baz'), ); $intersect = array_uintersect($arr1, $arr2, 'compareDeepValue'); print_r($intersect); function compareDeepValue($val1, $val2) { return strcmp($val1['value'], $val2['value']); } 

который дает, как вы надеетесь:

 Array ( [0] => Array ( [name] => asdfjkl; [value] => foo ) [2] => Array ( [name] => uiop [value] => baz ) ) 
 function compareDeepValue($val1, $val2) { return strcmp($val1['value'], $val2['value']); } 

Убедитесь, что ключ val2 существует в массиве val1, потому что функция сначала упорядочивает массив. Очень странно.