Как сравнить между собой неизвестное количество массивов и как вывести их общие значения? Таким вопросом я задался недавно.
Как выглядели массивы:
array(size=6)
0 =>
array(size=4)
'DDDD' =>8FF773161
'LLLLL' =>'0'
'SSSS' =>Feb 2 2011 12:00AM
'CCCC' =>'Mar 2 2016 12:00AM'
1 =>
array(size=4)
'DDDD' =>8FF773161
'LLLLL' =>'0'
'SSSS' =>Feb 2 2011 12:00AM
'CCCC' =>'Jan 21 2015 12:00AM'
2 =>
array(size=4)
'DDDD' => '8773161'
'LLLLL' =>'0'
'SSSS' =>Feb 2 2011 12:00AM
'CCCC' =>'Dec 8 2014 12:00AM'
3 =>
array(size=4)
'DDDD' =>8FF773161
'LLLLL' =>'0'
'SSSS' =>Feb 2 2011 12:00AM
'CCCC' =>'Jun 25 2014 12:00AM
4 =>
array(size=4)
'DDDD' =>8FF773161
'LLLLL' =>'0'
'SSSS' =>'Feb 2 2011 12:00AM'
'CCCC' =>'Jun 24 2014 12:00AM'
5 =>
array(size=4)
'DDDD' =>8FF773161
'LLLLL' =>'0'
'SSSS' =>'Feb 2 2011 12:00AM'
'CCCC' =>'Jun 23 2014 12:00AM’
Для поиска совпадений в массивах нужно использовать функцию array_intersect. Недостатком этой функции является то, что количество массивов должно быть известно и равно количеству аргументов.
В моем же случае могло быть два массива или десять или миллион.
На помощь в этом случае пришла функция call_user_func_array.
Функция вызывает пользовательскую функцию с массивом параметров. Таким образом, вызываем 'array_intersect' через call_user_func_array.
В результате имеем общие поля:
Array ( [DDDD] => 8773161 [SSSS] => Feb 2 2011 12:00AM )