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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Dominique Ottello
Le #23184591
Dominique Ottello
Malgré une lecture attentive de la documentation PHP, je ne vois pas
comment faire simplement.



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
Olivier Miakinen
Le #23184821
Bonjour,

Le 07/03/2011 22:33, Dominique Ottello a écrit :

Malgré une lecture attentive de la documentation PHP, je ne vois pas
comment faire simplement.



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']);



Oui, en effet.

Mais, est-ce la bonne solution ?



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
Dominique Ottello
Le #23186421
Olivier Miakinen
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.



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'])
Olivier Miakinen
Le #23187701
Le 08/03/2011 13:17, Dominique Ottello m'a répondu :

il serait probablement plus simple de remplacer :
$plugin_config['folder'][x] = texte
par :
$plugin_config[x]['folder'] = texte
et d'utiliser usort. [...]



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
Publicité
Poster une réponse
Anonyme