Administrateur PHPfrance |
11457 Messages
25 nov. 2015, 02:32
Merci pour cette piste !
En fait, c'est plutôt la fonction
uasort() qu'il me faut utiliser
car j'ai besoin de conserver le caractère associatif de mon tableau.
Grâce à la contribution de
[email protected] que j'ai trouvée sur
php.net,
j'obtiens le résultat souhaité.
setlocale(LC_ALL,'fr');
function natksort($array)
{ $original_keys_arr = array();
$original_values_arr = array();
$clean_keys_arr = array();
$i = 0;
foreach($array AS $key=>$value)
{ $original_keys_arr[$i] = $key;
$original_values_arr[$i] = $value;
$clean_keys_arr[$i] = strtr($key, "ÄÖÜäöüÉÈÀËëéèàç", "AOUaouEEAEeeeac");
$i++;
}
natcasesort($clean_keys_arr);
$result_arr = array();
foreach($clean_keys_arr AS $key=>$value)
{ $original_key = $original_keys_arr[$key];
$original_value = $original_values_arr[$key];
$result_arr[$original_key] = $original_value;
}
return $result_arr;
}
$tab = array('Zoé','Étienne','Alain');
uasort($tab, 'natksort');
var_dump($tab);
Mais il subsiste toutefois deux warnings
qui attestent d'une mauvaise transmission de mon tableau $tab
et que je n'arrive pas à résoudre (la ligne 9 étant le premier
foreach de la fonction).
(!) Warning: Invalid argument supplied for foreach() in W:\www\machin\test.php on line 9
Call Stack
# Time Memory Function Location
1 0.0000 245520 {main}( ) ..\test.php:0
2 0.0010 246480 uasort ( ) ..\test.php:26
3 0.0010 246552 natksort( ) ..\test.php:26
(!) Warning: Invalid argument supplied for foreach() in W:\www\machin\test.php on line 9
Call Stack
# Time Memory Function Location
1 0.0000 245520 {main}( ) ..\test.php:0
2 0.0010 246480 uasort ( ) ..\test.php:26
3 0.0080 246808 natksort( ) ..\test.php:26
array (size=3)
2 => string 'Alain' (length=5)
1 => string 'Étienne' (length=8)
0 => string 'Zoé' (length=4)
Une idée ?