Soucis trie de date fichier XML

Mammouth du PHP | 620 Messages

10 mai 2012, 18:58

Bonjour,
j’essaie de trier des dates qui sont dans un fichier xml afin d'afficher les actus chronologiquement.
Je soucis c'est que au lieu d'avoir un trie réél des date jour moi année j'ai un trie que je fait dabord sur tout les jour puis tout les moi puis tout les année.
en gros j'ai ce résultat :
01/01/2012
01/04/2012
01/06/2012
01/07/2012
01/08/2012
02/05/2012
02/06/2012
02/07/2012
02/08/2012
03/10/2012....

mon code actuel est :
	$debuts = array();
	
	foreach ($itemnom as $item) 
	{

	$debut = $item->getElementsByTagName('DATE_DEBUT');
	$debut = $debut->item(0)->nodeValue;

	$debuts[] = $debut.'<br/>'; 
	}

	$resultdate = array_unique($debuts);
	asort($resultdate);
	//print_r($resultdate);
	$debutsmenu = implode("", $resultdate);
	echo $debutsmenu;
Comment puis-je faire pour que les date soit dans le bon ordre ?

ViPHP
xTG
ViPHP | 7331 Messages

10 mai 2012, 19:23

Avec un format YYYY-MM-DD tu auras un tri correct avec cette fonction. ;)

Mammouth du PHP | 620 Messages

10 mai 2012, 21:05

le hic c'est que je ne peus pas modifié les dates qui sont dans le fichier xml.
Par contre puis-je les récupérer au format 01/01/1970 et faire en sorte d'avoir le format que tu préconise ? 1970/01/01

ViPHP
xTG
ViPHP | 7331 Messages

10 mai 2012, 21:50

La fonction date() est là pour cela. :P
$date = '01/01/2013';
$date = date('YYYY/MM/DD', strtotime($date));
Et si le format français n'est pas supporté (tu le verra assez vite), tu peux retravailler la date manuellement à coup de explode() sur le slash puis reconstruction de la chaîne dans le bon ordre.

Mammouth du PHP | 620 Messages

11 mai 2012, 10:33

ok je viens de faire le test sa à l'air d’être bon merci.
voilà comment j'ai fait pour avoir le bon trie (si plus simple ou si mieux je vous écoute):
	$debuts = array();
	
	foreach ($itemnom as $item) 
	{
	$debut = $item->getElementsByTagName('DATE_DEBUT');
	$debut = $debut->item(0)->nodeValue;
	$debut = date('Y/m/d', strtotime($debut));
	$debuts[] = $debut.'<br/>'; 
	}
	$resultdate = array_unique($debuts);
	asort($resultdate);
	$debutsmenu = implode("", $resultdate);
	echo $debutsmenu;