Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classement tableau multidimensionnel

4 réponses
Avatar
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

4 réponses

Avatar
Dominique Ottello
Dominique Ottello écrivait :

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
Avatar
Olivier Miakinen
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
Avatar
Dominique Ottello
Olivier Miakinen <om+ écrivait :

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'])
Avatar
Olivier Miakinen
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