Ordinare il secondo elemento di uno split()

mm88

Nuovo Utente
30 Ott 2008
14
0
0
Ciao a tutti, utilizzo una routine che legge il nome di alcuni file presenti in una cartella, composti da nome e cognome uniti da un underscore.

Riesco a separare il nome dal cognome utilizzando la funzione split, ma vorrei ordinarli solo in base al cognome.

Come posso inserire un asort() all'interno della routine?

O mi conviene seguire un modo diverso?


Vorrei un risultato del tipo:

giulio Bianchi
mario Rossi
anna Verde
ecc.


Ho provato aggiungendo:

$names = array(array('firstname' => $nome, 'lastname' => $cognome));

ma NON funziona.

Come devo modificare il codice?




codice:
Codice:
$nomi= @opendir($path) or die("Unable to open folder");

$num = 1;

while (($file = readdir($nomi)) == TRUE {

list ($nome, $cognome) = split ('[_]', $file);

echo "Nome: $nome; Cognome: $cognome;<br>\n";

$num++;

}




GRAZIE
 

mm88

Nuovo Utente
30 Ott 2008
14
0
0
prova a guardare questo link, puo darsi che ti serva

http://it.php.net/manual/it/function.array-multisort.php


Ti irngrazio per il link, ma non conosco bene php e non so come integrare la mia routine in modo da creare questo nuovo multisort array.

Non so come modificare il mio codice per creare questo nuovo array prima di leggerlo seguendo in ordine alfabetico il secondo parametro $cognome.


Qualcuno potrebbe indicarmi come modificare il codice?


GRAZIE
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
anche io non sono un espertissimo e quindi la soluzione che ho in mente potrebbe essere alqanto arzigogolata e un esperto potrebbe fare meglio


PHP:
$nomi= @opendir($path) or die("Unable to open folder");

$num = 0;
$nuovo_array=array();


while (($file = readdir($nomi)) == TRUE {

$esploso=explode("_",$file);
//in $esploso[0] ho il nome e in $esploso[1] il cognome

$nuovo_array[$num]=$esploso[1]."_".$esploso[0]; //inverto quindi ho cognome_nome
$num++;

}

asort($nuovo_array);//ordino - vedi anche sort su manuale php, se non ho capito male ordina l'array

for($k=0; $k <= $num; $k++){
$esploso=explode("_", $nuovo_array[$k];
//in $esploso[0] ho(almeno dovrei) il cognome e in $esploso[1] il nome

echo "nome $esploso[1] , cognome $esploso[0] <br>";

}

prova al massimo non funzia
link di sort
http://it.php.net/manual/it/function.sort.php
 

mm88

Nuovo Utente
30 Ott 2008
14
0
0
ti ringrazio per l'aiuto, perché - utilizzando sort() al posto di asort(), l'ordinamento appare in ordine alfabetico in base al cognome. L'unico problema rimane quello dei cognomi che contengono lettere accentate.

I cognomi che contengono lettere accentate, vengono messi dopo i nomi con la lettera 'z'.

Qualcuno ne conosce il motivo?


grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
perche per ordinare viene fatto un confronto tra le stringhe carattere per carattere valutando il codice asci, i caratteri accentati hanno un codice asci > del codice asci di z (= 122)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
scusa avevo letto male
che contengono o iniziano?

perchè in teoria

àndrea viene posto dopo zuzzerellone

ma (sempre in teoria perche non conosco quale algoritmo interno usi sort)

bànderas dovrebbe essere posto prima,
se provi con un semplice
if ("àndrea" < "zuzzerellone"){
echo "è vero è minore";
}else{
echo "è falso è maggiore";
}

ti darà: è falso è maggiore
 

mm88

Nuovo Utente
30 Ott 2008
14
0
0
scusa avevo letto male
che contengono o iniziano?

perchè in teoria

àndrea viene posto dopo zuzzerellone

ma (sempre in teoria perche non conosco quale algoritmo interno usi sort)

bànderas dovrebbe essere posto prima,
se provi con un semplice
if ("àndrea" < "zuzzerellone"){
echo "è vero è minore";
}else{
echo "è falso è maggiore";
}

ti darà: è falso è maggiore



Quelli che hanno anche l'ultima lettera del cognome accentata, vengono messi dopo la "z". Per questo non capisco.

grazie
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Provato a sostituire le lettere accentate con le corrispondenti entità HTML?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
sei sicuro di quello che dici?
ho provato questo semplice script

PHP:
<?php
$nomi=array();
$nome[0]="zuzzerellone";
$nome[1]="andreà";
$nome[2]="bànderas";
$nome[3]="àndreà";
$nome[4]="andrea";
$nome[5]="banderas";
sort($nome);
//asort($nome);
for ($k=0; $k <=5; $k++){
echo "n. ".$k.") ".$nome[$k]."<br>";
}
?>

e questo è l'output

n. 0) andrea
n. 1) andreà
n. 2) banderas
n. 3) bànderas
n. 4) zuzzerellone
n. 5) àndreà

solo àndreà è all'ultimo posto, come giustamente ho detto
anche se andreà ha l'ultima a accentata vine posto dopo andrea e prima di bandera come è giusto

verifica
ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP]Ordinare dati secondo prezzo PHP 2
C Ordinare alfabeticamente un array e ordinare un secondo array in funzione del primo. Javascript 12
M Ordinare una query join PHP 2
L [PHP] ordinare per data PHP 3
F [HTML] Google fogli ordinare per colonne HTML e CSS 0
P [PHP] ordinare un array multidimensionale in modo personalizzato PHP 2
T [PHP] ordinare un campo varchar che contiene numeri PHP 6
Trapano Query in php come ordinare per data e anche per ora PHP 7
L [PHP] ordinare xml PHP 0
Trapano [HTML] Ordinare indirizzi, creando un percorso HTML e CSS 3
M Ordinare i valori in query group by PHP 4
L Ordinare articoli dentro categorie e tag in ordine alfabetico wordpress WordPress 1
M Ordinare array (multidimensionale)? PHP 3
ste80 ordinare dati da file di testo PHP 3
R Ordinare alfabeticamente partendo da una PAROLA MySQL 0
M Ordinare visualizzazione record tramite form con input "text" PHP 2
xone Ordinare tramite menù a tendina i risultati di una query già stampati MySQL 0
M Ordinare array multidimensionale con esclusioni Javascript 0
borgo italia ordinare un array bidimensionale Snippet PHP 0
zighy ordinare risultati specifici PHP 20
D Ordinare i risultati di una query dalla fine della tabella MySQL 13
ivarello Ordinare dati Var in ordine numerico PHP 9
C Ordinare parole in base alla lunghezza PHP 1
Trapano Ordinare risultati MySQL 6
C Ordinare array in base alla lunghezza dei valori PHP 3
C Ordinare array multidimensionali PHP 0
T.W. Aiuto Per Ordinare Risultati Ricerca Da File CSV PHP 2
valient13 ordinare in ordine decrescente la lista PHP 2
F Ordinare array bidimensionale PHP 2
P [ASP] [Grauito] Ordinare categoria (era: reder by Cat) Offerte e Richieste di Lavoro e/o Collaborazione 1
G Ordinare query PHP 2
P Ordinare e impaginare una tabella contemporaneamente Javascript 1
novello88 MySQL ORDER BY [Era: ordinare i risultati di una database MySQL] MySQL 1
Monital ordinare il risultato di una query con variabili unite PHP 32
R Ordinare array in base al valore PHP 7
S ordinare array di date PHP 4
R Come ordinare gli articoli per data? Webdesign e Grafica 5
Monital ordinare in una tabella risultati query PHP 10
G ordinare i risultati di una query PHP 4
R Ordinare array in base al valore e alla key PHP 1
A Ordinare query sql in base ai risultati di ricerca PHP 1
N Ordinare per totali Database 0
G VBA e ordinare celle relativamente in Excel 2007 Windows e Software 0
S - Ordinare files uplodati - PHP 0
frankiedeguello Ordinare file per data di creazione PHP 1
T Ordinare dati di un Recordset [era:Grosso problema, chi mi aiuta?] Classic ASP 2
F ordinare una form con uno script php PHP 2
F FORM - ordinare l'email... HTML e CSS 3
J ordinare per nome Database 1
A Mantenere la validazione reindirizzandoci su un secondo sito WEb. (ASP.NET) ASP.NET 0

Discussioni simili