until loop in php

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

until loop in php

Messaggio da danix »

ciao a tutti,
ma non esiste il loop until in php?? nella documentazione non sono riuscito a trovare nulla... :( mi sembra molto strano però...

Mi illuminate per favore??


Grazie mille
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: until loop in php

Messaggio da conraid »

danix ha scritto:ciao a tutti,
ma non esiste il loop until in php?? nella documentazione non sono riuscito a trovare nulla... :( mi sembra molto strano però...

Mi illuminate per favore??
esistono solo questi:
http://it2.php.net/manual/en/language.c ... ctures.php

Secondo me puoi farlo con "do-while"

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: until loop in php

Messaggio da danix »

grazie conraid, pensavo di essere cerebroleso io a non trovarlo... :D

mi sembra tanto una mancanza in un linguaggio come php, c'è addirittura nella bash... :|
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: until loop in php

Messaggio da nuitari »

basta un semplice do while... è sufficiente invertire il controllo booleano

esempio, ipotizzando un do until sarebbe:

do
{
...
} until (value === true);

con il while invece è:

do
{
...
} while (value === false);

o se preferisci conservare la logica:

} while (!(value === true));

ed hai raggiunto lo scopo.
IMHO until è inutilmente ridondante.

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: until loop in php

Messaggio da danix »

Offtopic: lieto di rileggerti su questo forum nuitari... :) , volevo salutarti nell'altro topic ma ho visto che si trattava di "questioni personali" :lol: ...
tornando in topic, grazie del chiarimento, mi faresti un favore? Mi indicheresti la pagina del man di php in cui sono trattati i 3 "uguale" (===) o, se hai tempo, mi daresti tu un chiarimento?


Ancora grazie mille...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: until loop in php

Messaggio da conraid »

danix ha scritto:Offtopic: lieto di rileggerti su questo forum nuitari... :) , volevo salutarti nell'altro topic ma ho visto che si trattava di "questioni personali" :lol: ...
tornando in topic, grazie del chiarimento, mi faresti un favore? Mi indicheresti la pagina del man di php in cui sono trattati i 3 "uguale" (===) o, se hai tempo, mi daresti tu un chiarimento?
http://www.php.net/manual/en/language.o ... arison.php

compara l'uguaglianza dei valori e dei tipi

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: until loop in php

Messaggio da nuitari »

Eheh grazie danix ^^ Lieto di riscrivere su questo forum :)

Cercherò di dare una spiegazione chiara del concetto.
Come saprai, php è un linguaggio a tipizzazione debole. Spiegandolo in breve, significa che non sei tenuto a rispettare particolari regole nella creazione o nell'utilizzo dei dati in relazione al loro tipo.

Pertanto, ad esempio, in php puoi inizializzare una variabile con un contenuto numerico e poi sostituirlo con un valore di tipo stringa, o passare un valore numerico ad una funzione che richiede valori stringa, oppure, e questo è il nostro caso, confrontare due valori di tipo differente. Php farà automaticamente le conversioni.

Relativamente ai confronti booleani, lo zero, le stringhe vuote ed il null equivalgono a FALSE, il resto equivale a TRUE.

Per cui, in una normale uguaglianza con l'operatore == ("equal") avremo:

0 == FALSE -> vero
"" == FALSE -> vero
null == FALSE -> vero
FALSE == FALSE -> vero

Come è lecito aspettarsi, questa conversione automatica può portare spesso ad errori. Pensiamo ad esempio ai valori di ritorno restituiti da determinate funzioni, come array_search().

array_search() cerca all'interno di un array un determinato valore e restituisce la chiave corrispondente. In caso non trovi nulla, restituisce FALSE.

Ipotizziamo di avere un array costituito nel seguente modo:

Codice: Seleziona tutto

$my_data = array(0 => "pippo", 1 => "pluto");
e di usare array_search per cercare "pippo" utilizzando la normale uguaglianza per verificare se il valore è stato trovato oppure no:

Codice: Seleziona tutto

if (array_search("pippo", $my_data) == false)
	echo "non trovato";
else
	echo "trovato";
la funzione array_search() trova pippo e restituisce la chiave corripondente, che è 0. Il valore 0 viene confrontato con false e, nella conversione del tipo dell'uguaglianza semplice, viene considerato uguale. Pertanto il risultato sarà "non trovato".

Per ovviare a questo problema, in php 4 è stato introdotto l'operatore === ("identical"), che oltre a confrontare il valore confronta anche il tipo di valore restituito.
Secondo questo operatore, avremo:

0 === FALSE -> falso
"" === FALSE -> falso
null === FALSE -> falso
FALSE === FALSE -> vero

Pertanto, se vogliamo rendere l'esempio di cui sopra funzionante, dovremo scrivere:

Codice: Seleziona tutto

if (array_search("pippo", $my_data) === false)
	echo "non trovato";
else
	echo "trovato";
ed in tal caso il risultato sarà "trovato", come dovrebbe essere lecito aspettarsi. L'operatore !== ("not identical") ovviamente agisce al contrario.

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: until loop in php

Messaggio da danix »

la forza di questa community è che c'è un sacco di gente preparata su un sacco di argomenti... Grazie mille per le spiegazioni... :D
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: until loop in php

Messaggio da nuitari »

eddechè, è un piacere :)
Aggiungo un ultima cosa: nella normale uguaglianza, la stringa "0" viene comunque considerata false. Questo vale solo per questa stringa specifica, non significa che le stringhe vengano convertite numericamente prima di un confronto booleano. Ad esempio, "00" non viene considerato falso, per quanto valga comunque 0 se convertita.

Rispondi