<?php

// ------------------------------------------------------------------------- //
// Récupère le nombre d'occurrences des valeurs d'une liste.                 //
// ------------------------------------------------------------------------- //
// Auteur: iago                                                              //
// Email:  doc.iago@free.fr                                                  //
// Web:    http://doc.iago.free.fr/                                          //
// ------------------------------------------------------------------------- //

<?

function
CountUniqueVal (&$tableau)
{

// à partir d'un tableau cette fonction retourne un autre tableau qui a comme
// clé les valeurs du premier tableau et comme valeur le nombre d'occurrences
// de chaque valeur du tableau entré. Le tableau étant trié selon ses valeurs
// ie: $tab = array('hello','hello','world') donne
//     $tab[hello] == 2 et $tab[world] == 1

    
while ($i = each($tableau))
    {
        if (isset(
$tab_unique[$i[1]]))
        {
            
$tab_unique[$i[1]] = $tab_unique[$i[1]] + 1;
        }
        else
        {
            
$tab_unique[$i[1]] = 1;
        }
    }
    
    
arsort($tab_unique);
    
$tableau = $tab_unique;
}

function
SplitKeyAndVal (&$tab_val, &$tab_key)
{

// à partir d'un tableau associatif on retourne deux tableaux
// le premier contient les valeur qui étaient associées aux clés
// le second contient les clés du tableau associatif

    
while ($i = each($tab_val))
    {
        
$tab_key[] = $i[0];
        
$tab_val_buffer[] = $i[1];
    }
    
    
$tab_val = $tab_val_buffer;
}

//----- Un exemple d'utilisation -----//

$tab_val = Array(
    
"apache", "PHP4", "apache", "Apache", "apache", "apache", "apache",
    
"apache", "apache", "apache", "apache", "apache", "apache", "PHP4",
    
"MySql", "MySql", "apache", "PHP", "GNU", "PHP4", "PHP4", "phpinfo",
    
"http://phpinfo.net");

CountUniqueVal($tab_val);
SplitKeyAndVal($tab_val, $tab_key);

while (
$i = each($tab_key))
{
    echo
$i[1]." | ";
}
echo
"<br>";

while (
$i = each($tab_val))
{
    echo
$i[1]." | ";
}

?>