Obter interseção de uma matriz múltipla em PHP
Eu tenho uma matriz múltipla, como o exemplo a seguir.
$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',
),
)
ObjetivoEu gosto de percorrer as sub-matrizes para obter apenas o cruzamento. A matriz foi criada dinamicamente, pode ter muitas sub-matrizesrole_[x]
e também muita chave / valor dentro das sub-matrizes. A chave não é necessária, apenas o valor. A chave também é uma contagem, não uma sequência.
Como resultado, eu gostaria de obter neste exemplo este pequeno array.
$array = array( 'value_2' )
Os índices ", o nome da matriz", comorole_1
das sub-matrizes não é mais relevante após a interseção. Importante para mim no resultado são os valores, apenas os valores existentes em cada sub-matriz.
Eu tentei com a fonte, mas acho que é possível muito mais simples.
$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++;
};
A mesclagem desse resultado de várias matrizes deve ser executada com umarray_merge
em um loop.
Obrigado pelo seu tempo.