Obtenga la intersección de una matriz múltiple en PHP

Punto de partida

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',
  ),
)
Gol

Me 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.

Tratar

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.

Respuestas a la pregunta(3)

Su respuesta a la pregunta