Newsgroup: it.comp.www.php
Titolo: Manipolazione array un pò anomala...

Buongiorno a tutti,
con la premessa che sono un novello in Php e che sto facendo uno script per 
uso mio personalissimo mi sono imbattuto nel seguente problema ma non so 
come risolverlo:
Ho un array con dati multipli di 3 del tipo
array[0] -> data e ora;
array[1] -> nome;
array[2] -> cognome;
array[3] -> data e ora;
array[4] -> nome;
array[5] -> cognome;
array[6] -> data e ora;
array[7] -> nome;
array[8] -> cognome;
.
.
L'array ce l'ho già così (è l'output di un particolare software per cui la 
partenza può essere solo quella e non la posso modificare).
Ora l'obiettivo è di ordinare per data ed ora questi dati che, allo stato 
attuale sono alla rinfusa.
Avevo pensato a 2 soluzioni:
1 - trasformare il contenuto dell'indice 0 (e multipli di 3) in stringhe 
strtotime e qui il problema sarebbe come farlo visto che attualmente data ed 
ora sono nella forma: 31/12/200800:36:30 (esattamente così, neanche spaziato 
tra data ed ora);
2 - splittare il contenuto dell'indice 0 (e multipli di 3) in 2 campi data 
ed ora per ottenere un'array tipo:
array[0] -> data;
array[1] -> ora;
array[2] -> nome;
array[3] -> cognome;
array[4] -> data;
array[5] -> ora;
array[6] -> nome;
array[7] -> cognome;
.
.
.
In entrambi i casi, però, non so come muovermi... sapete darmi qualche 
indizio/suggerimento?
Grazie in anticipo a tutti. 

 indizio/suggerimento?
assumendo che la data sia sempre in questo formato, considerando che
- i primi dieci caratteri contengono la data (giorno mese e anno sono 
separati da /)
- i secondi (?!) dieci caratteri contengono l'ora (ora minuti e secondi 
sono separati da :)
dando un'occhiata alle funzioni substr, explode e mktime riesci ad 
ottenere il tuo unix timestamp facilmente ...

 ottenere il tuo unix timestamp facilmente ...
Ok, provo questa strada. Grazie. 

 un pò di tempo...
visto che sei agli inizi ti consiglio di dare un'occhiata al manuale
http://it.php.net/manual/en/language.types.array.php

 neanche spaziato tra data ed ora);
Usa una regexp:
^([0-9]{2})/([0-9]{2})/([0-9]{4})([0-9]{2}):([0-9]{2}):([0-9]{2})$
Con preg_match ( 
http://it.php.net/manual/en/function.preg-match.php
 ) ti 
trovi in $matches i vari elementi: $matches[1]=giorno, $matches[2]=mese, 
ecc.

 
http://it.php.net/manual/en/language.types.array.php
Ti ringrazio appeno posso do un'occhiata. 

 "cognome"=>cognome) ...
Visto che nessuno l'ha detto ancora, lo dico io:
perché non usare il timestamp come chiave dell'array?
Così dopo basta usare ksort.
-- 
ValeRyo
CBR600F "Cerbero" - 
http://www.slimmit.com/go.asp?6YT
GamerTag: 
http://card.mygamercard.net/IT/nxe/ValeRyo76.png
 

 Così dopo basta usare ksort.
Cioè? 

 ha scritto nel messaggio
news:49c0c440$0$6821$
5fc...@news.tiscali.it

$arr['20090318114000'] = array(
    'dataora' => '18/03/2009 11:40:00',
    'nome' => 'ValeRyo',
    'cognome' => 'Saeba'
);
Oppure usi il timestamp unix, ma visto che stai lavorando a stringhe
e devi per forza scompattarti la data in pezzi, così fai prima e comunque
le date sono ordinate numericamente.
Fatto questo, un ksort($arr) ti ordinerà l'array per data, a meno che io
non stia dimenticando qualcosa :-)


 non stia dimenticando qualcosa :-)
Bello comodo. Ora provo. Grazie