TRI multiple sur tableau associatif

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : TRI multiple sur tableau associatif

par Xenon_54 » 22 oct. 2005, 20:00

Idéalement, il aurait fallu que tu construises ton tableau ainsi:
$files[] = array(
    'image' => $filename,
    'dateimage' => $dateimage
);
Ainsi chaque ligne de ton tableau représente une image et possède ses propres informations. Tu aurais pu essayer la méthode proposée par le manuel:
http://www.php.net/manual/fr/function.a ... tisort.php
Example 3. Sorting database results

par Truc » 22 oct. 2005, 17:56

SAlut essaie en faissant un tri sur les 2 sous tableaux:
array_multisort($files['dateimage'], SORT_ASC, $files['image'], SORT_ASC);

TRI multiple sur tableau associatif

par arginine » 22 oct. 2005, 14:25

Bonjour,

j'ai "crée" une petite fonction qui permet de lister les fichier jpg d'un dossier puis de créer un tableau associatif comprenant deux colonnes (IMAGE) et (DATEIMAGE) dans lequelles sont stockés le nom du fihier jpg et la date de ce dernier (via les infos exif).

Avec array_multisort j'arrive bien à trier chacun l'un ou l'une colonne du tableau mais ce que je n'arrive pas c'est de trier une collone (DATEIMAGE) et de faire en sorte que ce tri AFFECTE aussi l'autre colonne (IMAGE) ...

En résumé, comment faire pour trier un tableau associatif sur une colonne et que le résultat du tri AFFECTE AUSSI l'autre colonne ....


Un print_r du tableau me donne ca:

Code : Tout sélectionner

Array ( [image] => Array ( [0] => toto.jpg [1] => tata.jpg [2] => 92.jpg [3] => 93.jpg [4] => 94.jpg ) [dateimage] => Array ( [0] => 2000-12-26 05:08:08 [1] => 2005-08-27 17:39:41 [2] => 2005-09-04 18:24:09 [3] => 2005-09-04 18:29:43 [4] => 2005-09-04 18:29:44 ) )

La colonne DATEIMAGE est bien triée mais aucune répercution n'a eu lieu sur la colonne DATEIMAGE !!!
(ex: la date de toto.jpg est 2005-09-04 18:29:44 et j'aurais donc aimé a faire en sorte que le nouvel indice de toto.jpg soit 4 et non pas 0)....


Ci joint le code de ma fonction:
<pre><?

// Fonction de scan du repertoire
function scandir($dirstr)
{$files = array();
 $fh = opendir($dirstr);
 while (false !== ($filename = readdir($fh)) )
 {
 if ( $filename != "." && $filename != ".." && eregi(".jpg", $filename) )
 {
	// Lecture des infos EXIF et determination de la date/heure de l'image
	$exif = exif_read_data("./thumbnails/".$filename);
	if(empty($exif['DateTime'])) {$dateimage = date("Y-m-d H:i:s", filemtime($dirstr."/".$filename));}
	else
	{ 
	$dateimage1 = $exif['DateTime'];
	// Formqtqge date/heure
	$dateimage_raw1 = explode(' ',$dateimage1); 
	$dateimage = str_replace(':','-',$dateimage_raw1[0]).' '.$dateimage_raw1[1];
	}

$files['image'][] = $filename;
$files['dateimage'][] = $dateimage;

 }
 }
 closedir($fh);
 array_multisort($files['dateimage'] , SORT_ASC );

 return $files;
}
 
$listing_dossier=scandir("./thumbnails");
 print_r ($listing_dossier);
 
?>
</pre>

Par avance Merci beaucoup,


Francis