Trier un array par une partie de chaque entrée
Résolu
DrewDrew
Messages postés
9
Statut
Membre
-
DrewDrew Messages postés 9 Statut Membre -
DrewDrew Messages postés 9 Statut Membre -
Bonjour,
Alors tout d'abord je prends les albums photo qui ce trouent sur le serveur avec un "scandir"
Disons que le php me donne ceci:
J'aimerai donc classer les albums (array) par les dates qui ce trouvent entre parenthèses. J'aimerai bien pouvoir les classer en gardant le format de date DD-MM-YYYY. J'ai déjà essayé de tout. En utilisant la fonction explode( '(', $album) et puis d'essayer de classer mais ca ne fonctionnais pas. C'est pour ca que j'ai essayé avec le format YYYY-MM-DD pour pouvoir le classer alfabetiquement.
Y'a-t-il quelqu'un qui peut m'aider? :-)
Merci d'avance
Alors tout d'abord je prends les albums photo qui ce trouent sur le serveur avec un "scandir"
Disons que le php me donne ceci:
<?php
$album[0] = "Jochri (2013-05-10)";
$album[1] = "Vanderhasselt (01-06-2013)";
$album[2] = "Jochri (2013-05-09)";
$album[3] = "Verbrande Brug (2013-06-30)";
$album[4] = "Ter Wilgen (2013-04-13)";
$album[5] = "Jochri (2013-05-12)";
?>
J'aimerai donc classer les albums (array) par les dates qui ce trouvent entre parenthèses. J'aimerai bien pouvoir les classer en gardant le format de date DD-MM-YYYY. J'ai déjà essayé de tout. En utilisant la fonction explode( '(', $album) et puis d'essayer de classer mais ca ne fonctionnais pas. C'est pour ca que j'ai essayé avec le format YYYY-MM-DD pour pouvoir le classer alfabetiquement.
Y'a-t-il quelqu'un qui peut m'aider? :-)
Merci d'avance
A voir également:
- Trier un array par une partie de chaque entrée
- Excel trier par ordre croissant chiffre - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Triez cette liste par ordre alphabétique des villes et par note de la meilleure à la moins bonne. quel mot est formé par les 8 premières lettres de la colonne code ? ✓ - Forum Excel
- Logiciel pour trier les photos automatiquement - Guide
- Nouvelle partie pokemon x ✓ - Forum DS
Sinon, le principe c'est d'appliquer à chaque ligne de ton tableau une fonction :
$func = function($value) { return explode('(',$value); }; var_dump(array_map($func,$album));Faudra que ta fonction soit un peu plus compliquée, mais c'est un départ.
pour avoir ton tableaux en deux dimension :
<?php $album[0] = "Jochri (10-05-2013)"; $album[1] = "Vanderhasselt (01-06-2013)"; $album[2] = "Jochri (09-05-2013)"; $album[3] = "Verbrande Brug (30-06-2013)"; $album[4] = "Ter Wilgen (13-04-2013)"; $album[5] = "Jochri (12-05-2013)"; $func = function($value) { return str_replace(')','',explode('(',$value)); }; $album = array_map($func,$album); echo '<table>'; echo '<tr><th> Val0 </th><th> Val1 </th></tr>'; foreach ($album as $value) { echo '<tr><td>'. $value[0] . '</td><td>'. $value[1] .'</td></tr>'; } echo '</table>'; ?>mais après j'ai arrêté :p
J'espère que ça t'aidera un peu.
Que ça devienne pas une habitude :-)
Pour le coup le format américain des dates est mieux pour classer ...
Mais rien ne t'empêche maintenant que tu sais faire un array_map de faire une petite fonction qui va te l'arranger au format français ...
J'ai récupérer la fn de classement sur clef choisie pour tableau multidimensionnel sur https://www.php.net/manual/fr/function.sort.php
<?php $album[0] = "Jochri (2013-10-05)"; $album[1] = "Vanderhasselt (2013)-06-01)"; $album[2] = "Jochri (2013-05-09)"; $album[3] = "Verbrande Brug (2013-06-30)"; $album[4] = "Ter Wilgen (2013-04-13)"; $album[5] = "Jochri (2013-05-12)"; $func = function($value) { return str_replace(')','',explode('(',$value)); }; $album = array_map($func,$album); echo '<table>'; echo '<tr><th> Val0 </th><th> Val1 </th></tr>'; foreach ($album as $value) { echo '<tr><td>'. $value[0] . '</td><td>'. $value[1] .'</td></tr>'; } echo '</table>'; function array_sort($array, $on, $order=SORT_ASC) { $new_array = array(); $sortable_array = array(); if (count($array) > 0) { foreach ($array as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { if ($k2 == $on) { $sortable_array[$k] = $v2; } } } else { $sortable_array[$k] = $v; } } switch ($order) { case SORT_ASC: asort($sortable_array); break; case SORT_DESC: arsort($sortable_array); break; } foreach ($sortable_array as $k => $v) { $new_array[$k] = $array[$k]; } } return $new_array; } $album = array_sort($album, '1', SORT_ASC); echo '<table>'; echo '<tr><th> Val0 </th><th> Val1 </th></tr>'; foreach ($album as $value) { echo '<tr><td>'. $value[0] . '</td><td>'. $value[1] .'</td></tr>'; } echo '</table>'; ?>