Classement tableau multidimensionnel
Le
Dominique Ottello

Bonjour,
Je suis un peu « paumé » dans les classements de tableaux
multidimensionnels.
Soit un tableau :
$plugin_config['name'][x] = texte
$plugin_config['folder'][x] = texte
$plugin_config['installed'][x] = true ou false
$plugin_config['abbr'][x] = texte
x étant une clé numérique allant de 0 à une valeur indéterminée.
Je voudrais classer ce tableau sur les valeurs ascendantes texte de
'name', en réaffectant l'index numérique x à partir de 0, bien sûr, en
gardant les relations entre les quatre valeurs.
Malgré une lecture attentive de la documentation PHP, je ne vois pas
comment faire simplement.
Pourriez-vous me mettre sur la bonne voie ?
--
Ce n'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont forcément raison. Coluche
Je suis un peu « paumé » dans les classements de tableaux
multidimensionnels.
Soit un tableau :
$plugin_config['name'][x] = texte
$plugin_config['folder'][x] = texte
$plugin_config['installed'][x] = true ou false
$plugin_config['abbr'][x] = texte
x étant une clé numérique allant de 0 à une valeur indéterminée.
Je voudrais classer ce tableau sur les valeurs ascendantes texte de
'name', en réaffectant l'index numérique x à partir de 0, bien sûr, en
gardant les relations entre les quatre valeurs.
Malgré une lecture attentive de la documentation PHP, je ne vois pas
comment faire simplement.
Pourriez-vous me mettre sur la bonne voie ?
--
Ce n'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont forcément raison. Coluche
J'ai bien relu et j'ai trouvé quelque chose qui fonctionne comme je veux
array_multisort($plugin_config['name'], SORT_ASC,
$plugin_config['folder'], $plugin_config['installed'],
$plugin_config['abbr']);
Mais, est-ce la bonne solution ?
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
Le 07/03/2011 22:33, Dominique Ottello a écrit :
Oui, en effet.
Avec la structure de données que tu as choisi, je pense que oui. Sinon,
il serait probablement plus simple de remplacer :
$plugin_config['name'][x] = texte
$plugin_config['folder'][x] = texte
$plugin_config['installed'][x] = true ou false
$plugin_config['abbr'][x] = texte
par :
$plugin_config[x]['name'] = texte
$plugin_config[x]['folder'] = texte
$plugin_config[x]['installed'] = true ou false
$plugin_config[x]['abbr'] = texte
et d'utiliser usort. Avec cette façon d'organiser les données, un
$plugin_config[x] contient de façon indissociable toutes les données
qui concernent le même élément.
Exemple :
function cmp_by_name($a, $b) {
return strcmp($a['name'], $b['name']);
}
function cmp_by_folder($a, $b) {
return strcmp($a['folder'], $b['folder']);
}
...
usort($plugin_config, "cmp_by_name");
Cordialement,
--
Olivier Miakinen
Oui, mais... Effet de bord, je ne peux plus effectuer des recherches de
manière simple avec, par exemple in_array
in_array($mod_datadir, $plugin_config['folder'])
C'est exact. Eh bien dans ce cas je ne vois pas de meilleure méthode
que celle que tu as trouvée (array_multisort).
Cordialement,
--
Olivier Miakinen