Получить пересечение нескольких массивов в PHP
У меня есть несколько массивов, как в следующем примере.
$array = array (
'role_1' =>
array (
0 => 'value_2',
0 => 'value_3',
),
'role_2' =>
array (
0 => 'value_1',
1 => 'value_2',
),
'role_3' =>
array (
0 => 'value_2',
1 => 'value_3',
),
)
ЦельМне нравится зацикливаться на подмассивах, чтобы получить только пересечение. Массив был создан динамически, может иметь много подмассивовrole_[x]
а также много ключа / значения внутри под-массивов. Ключ не нужен, только значение. Ключ также является счетчиком, а не строкой.
В результате я хотел бы получить в этом примере этот небольшой массив.
$array = array( 'value_2' )
Индексы, "имя-массива", какrole_1
из подмассивов не более актуальны после пересечения. Для меня важно, чтобы в результате были значения, в каждом подмассиве существуют только те значения, которые там есть.
Я пытался с источником, но я думаю, что это возможно гораздо проще.
$value_stack = array();
$result = array();
$i = 0;
foreach( $settings_ as $role => $values ) {
foreach( $values as $value ){
if( in_array( $value,$value_stack ) || $i === 0 ) {
$result[ $role ][] = $value;
}
$value_stack[] = $value;
}
$i++;
};
Слияние этого результата с несколькими массивами должно выполняться сarray_merge
в петле.
Спасибо за ваше время.