PDA

View Full Version : Ciclo FOR per lettere


Teju
03-10-2007, 19:57
Ciao gente, parlo di PHP, ma può valere anche per altri linguaggi...

Sto facendo un ciclo FOR così:
for($char="A"; $char!="Z"; $char++)
ma giustamente mi prende tutte le $char da "A" a "Y", ovvero la lettera prima della "Z"...
ho provato allora a mettere
for($char="A"; $char!="]"; $char++)
visto che in ASCII il simbolo "]" è quello direttamente successivo alla "Z", ma mi va in timeout la pagina...

Come fare?? :D

andbin
03-10-2007, 20:08
visto che in ASCII il simbolo "]" è quello direttamente successivo alla "Z", ma mi va in timeout la pagina...No, quello appena dopo la 'Z' è '['

Teju
03-10-2007, 20:14
No, quello appena dopo la 'Z' è '['
Sì, scusa, ho messo la "[", ma cmq nn va...

andbin
03-10-2007, 20:47
Parlando di PHP non va perché il tipo di dato su cui si opera è un string. E fare un ++ su un string ha dei risultati, per così dire, un po' .... buffi. :asd:
Se si ha "Z", fare ++ dà come risultato "AA".

Si potrebbe fare:
for ($i=65; $i<=90; $i++)
{
$ch = chr ($i);
}e sarebbe già meglio.

Teju
04-10-2007, 08:56
Parlando di PHP non va perché il tipo di dato su cui si opera è un string. E fare un ++ su un string ha dei risultati, per così dire, un po' .... buffi. :asd:
Se si ha "Z", fare ++ dà come risultato "AA".

Si potrebbe fare:
for ($i=65; $i<=90; $i++)
{
$ch = chr ($i);
}e sarebbe già meglio.
Grazie, con il chr() funziona, però stavo pensando: se mettevo un
for($char="A"; $char!="AA"; $char++)
in linea teorica è uguale, no? :)

Giusto per curiosità a fine progetto proverò! :p

andbin
04-10-2007, 09:52
for($char="A"; $char!="AA"; $char++)Sì, così sarebbe anche corretto.

Ziosilvio
04-10-2007, 10:12
Parlando di PHP non va perché il tipo di dato su cui si opera è un string. E fare un ++ su un string ha dei risultati, per così dire, un po' .... buffi. :asd:
Se si ha "Z", fare ++ dà come risultato "AA".
"Buffi"?
Non più di tanto: è semplicemente l'ordinamento lessicografico sull'alfabeto inglese maiuscolo. Prima la stringa vuota, poi tutte le stringhe di lunghezza 1 in ordine alfabetico, poi tutte le stringhe di lunghezza 2 in ordine alfabetico, poi...
Si potrebbe fare:
for ($i=65; $i<=90; $i++)
{
$ch = chr ($i);
}e sarebbe già meglio.
Oppure... esiste, in PHP, una funzione che restituisce il codice ASCII di un carattere?
In Python c'è, si chiama ord, e uno per fare un ciclo su tutte le maiuscole scrive:
for c in range(ord('A'),ord('Z')+1):
# ciclo su c