Obtenga la intersección de una matriz múltiple en PHP
Tengo una matriz múltiple, como el siguiente ejemplo.
$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',
),
)
GolMe gusta recorrer los subconjuntos para obtener solo la intersección. La matriz se creó dinámicamente, puede tener muchas sub-matricesrole_[x]
y también mucha clave / valor dentro de las sub-matrices. La clave no es necesaria, solo el valor. La clave también es un recuento, no una cadena.
Como resultado, me gusta obtener en este ejemplo esta pequeña matriz.
$array = array( 'value_2' )
Los índices, "el nombre de la matriz", comorole_1
de las sub-matrices no es más relevante después de la intersección. Lo importante para mí en el resultado son los valores, solo los valores que existen existen en cada sub-matriz.
Lo había intentado con la fuente, pero creo que es posible mucho más simple.
$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++;
};
La fusión de este resultado de matriz múltiple debe ejecutarse con unarray_merge
en un bucle
Gracias por tu tiempo.