Obter interseção de uma matriz múltipla em PHP

Ponto de partida

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

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

Experimentar

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.

questionAnswers(3)

yourAnswerToTheQuestion