array_count_values_recursive
Função que conta as frequências de cada valor em um array multidimensional ou não.
Achei legal compartilhar com a galera.
O array para teste
$array = array (
0 => 'Q',
1 =>
array (
0 => 'Z',
1 => 'Y',
2 =>
array (
0 => 'E',
1 => 'X',
2 => 'F',
3 => 'R',
4 => 'B',
5 => 'O',
6 => 'K',
7 => 'X',
8 => 'Q'
),
3 =>
array (
0 =>
array (
0 => 'U',
1 => 'K',
2 =>
array (
0 => 'R',
1 => 'N',
2 => 'H',
3 => 'O',
4 => 'J',
5 => 'U',
6 => 'I',
7 => 'S',
8 => 'A'
)
),
1 =>
array (
0 => 'A',
1 => 'P',
2 => 'E',
3 => 'B',
4 => 'H',
5 => 'H',
6 => 'V',
7 => 'M',
8 => 'G'
)
),
4 =>
array (
0 => 'E',
1 => 'Z',
2 =>
array (
0 => 'T',
1 => 'Z',
2 => 'L',
3 => 'N',
4 => 'V',
5 => 'B',
6 => 'V',
7 => 'T',
8 => 'F'
),
3 =>
array (
0 => 'O',
1 => 'N',
2 =>
array (
0 => 'O',
1 => 'U',
2 => 'C',
3 => 'H',
4 => 'G',
5 => 'D',
6 => 'U',
7 => 'H',
8 => 'R'
),
3 =>
array (
0 => 'D',
1 => 'E',
2 =>
array (
0 => 'H',
1 => 'F',
2 => 'H',
3 => 'K',
4 => 'M',
5 => 'Q',
6 => 'P',
7 => 'A',
8 => 'P'
),
3 =>
array (
0 => 'J',
1 => 'L',
2 =>
array (
0 => 'E',
1 => 'W',
2 => 'F',
3 => 'X',
4 => 'K',
5 => 'Y',
6 => 'M',
7 => 'J',
8 => 'V'
),
3 =>
array (
0 => 'D',
1 => 'C',
2 =>
array (
0 => 'V',
1 => 'B',
2 => 'D',
3 => 'I',
4 => 'T',
5 => 'D',
6 => 'D',
7 => 'B',
8 => 'D'
)
)
)
)
)
)
),
2 =>
array (
0 =>
array (
0 => 'S',
1 => 'W',
2 =>
array (
0 => 'Q',
1 => 'K',
2 => 'W',
3 => 'N',
4 => 'W',
5 => 'O',
6 => 'E',
7 => 'X',
8 => 'D'
),
3 =>
array (
0 => 'A',
1 => 'S',
2 =>
array (
0 => 'D',
1 => 'G',
2 => 'V',
3 => 'D',
4 => 'Z',
5 => 'P',
6 => 'K',
7 => 'M',
8 => 'Q'
),
),
),
),
3 => 'Z',
4 => 'S'
);
A função array_count_values_recursive
/**
* Conta as frequências de cada valor de um array
* @param array $input O array de valores para contagem
* @return array Retorna um array associativo de
* valores de input como chaves e suas quantias como valor.
*/
function array_count_values_recursive( array $input )
{
$result = array( );
array_walk_recursive(
$input,
function( $value ) use( &$result )
{
if( isset( $result[ $value ] ) )
{
$result[ $value ] += 1;
}
else
{
$result[ $value ] = 1;
}
}
);
return $result;
}
Modo de usar
<?php
var_dump( array_count_values_recursive( $array ) );
?>
Resultado
array
'Q' => int 5
'Z' => int 5
'Y' => int 2
'E' => int 6
'X' => int 4
'F' => int 4
'R' => int 3
'B' => int 5
'O' => int 5
'K' => int 6
'U' => int 4
'N' => int 4
'H' => int 7
'J' => int 3
'I' => int 2
'S' => int 4
'A' => int 4
'P' => int 4
'V' => int 6
'M' => int 4
'G' => int 3
'T' => int 3
'L' => int 2
'C' => int 2
'D' => int 10
'W' => int 4
:thumbsup:/>Discussão (1)
Carregando comentários...