Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kakashi_Hatake

array_count_values_recursive

Recommended Posts

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:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.