PDA

View Full Version : [Php] Come utilizzare "continue" se...


lore_83
31-05-2008, 18:06
Salve a tutti.

Ho una situazione del genere

FOR (...)
{
IF (...)
{
continue;
}
ELSE
{
echo '...';
}
}

Se il ciclo continua sempre non ho nessun output, come posso fare per averne uno nel caso in cui il ciclo continuasse sempre (per tutto il FOR)?

Grazie in anticipo.

ndakota
31-05-2008, 18:32
dipende un po dal for.. puoi scrivere almeno l'intestazione del for?

wingman87
01-06-2008, 00:38
Salve a tutti.

Ho una situazione del genere

FOR (...)
{
IF (...)
{
continue;
}
ELSE
{
echo '...';
}
}

Se il ciclo continua sempre non ho nessun output, come posso fare per averne uno nel caso in cui il ciclo continuasse sempre (per tutto il FOR)?

Grazie in anticipo.

Metti un echo anche nell'if

lore_83
01-06-2008, 12:49
Metti un echo anche nell'if

Ciao e grazie per la risposta.

Nel tuo caso però avrei tanti output quanti sono i continue che hanno avuto esecuzione, invece io voglio UN output se e solo se il ciclo continua SEMPRE.

Grazie.

lore_83
01-06-2008, 19:14
Up (importante! :muro:)

ndakota
01-06-2008, 19:35
te l'ho detto che è necessario vedere l'intestazione del for.. esempio


$str = "ciao a tutti";

for($i = 0; $i < strlen($str); $i++)
{
if($str[$i] != "a")
continue;
else
echo "la stringa contiene una a";

if($i == strlen($str)-1)
echo "la stringa non contiene a";
}


in questo caso si può fare così.. ma non sempre va bene, per questo ti chiedo di farci vedere il codice..

lore_83
01-06-2008, 22:22
te l'ho detto che è necessario vedere l'intestazione del for.. esempio


$str = "ciao a tutti";

for($i = 0; $i < strlen($str); $i++)
{
if($str[$i] != "a")
continue;
else
echo "la stringa contiene una a";

if($i == strlen($str)-1)
echo "la stringa non contiene a";
}


in questo caso si può fare così.. ma non sempre va bene, per questo ti chiedo di farci vedere il codice..

Ciao, ecco il codice:
for ($i = 1; $i < $total+1; $i++)
{
if (strlen($address[$i]["add"]) == 0 or (strtolower($tholoc[$i]["ln"]) !== strtolower($localityname) and strtolower($thodep[$i]["dln"]) !== strtolower($localityname)))
{
continue;
}

Questa è la condizione che CONTINUA sempre.
Tralascio gli elseif che seguono perché credo che non servano.

ndakota
01-06-2008, 22:26
Ciao, ecco il codice:
for ($i = 1; $i < $total+1; $i++)
{
if (strlen($address[$i]["add"]) == 0 or (strtolower($tholoc[$i]["ln"]) !== strtolower($localityname) and strtolower($thodep[$i]["dln"]) !== strtolower($localityname)))
{
continue;
}

Questa è la condizione che CONTINUA sempre.
Tralascio gli elseif che seguono perché credo che non servano.

fai cosi..

for ($i = 1, $j = 1; $i < $total+1; $i++)
{
if (strlen($address[$i]["add"]) == 0 or (strtolower($tholoc[$i]["ln"]) !== strtolower($localityname) and strtolower($thodep[$i]["dln"]) !== strtolower($localityname)))
{
$j++;
continue;
}

//gli altri tuoi controlli

if($i==$total && $i==$j)
echo "quello che vuoi";
}

lore_83
01-06-2008, 22:36
secondo me basta mettere un if($i==$total)echo "quello che vuoi" prima della chiusura del for..

Ma se $i == $total non considera se le iterazioni precedenti (se ce ne fossero) hanno continuato o no.

lore_83
01-06-2008, 22:37
fai cosi..

for ($i = 1, $j = 1; $i < $total+1; $i++)
{
if (strlen($address[$i]["add"]) == 0 or (strtolower($tholoc[$i]["ln"]) !== strtolower($localityname) and strtolower($thodep[$i]["dln"]) !== strtolower($localityname)))
{
$j++;
continue;
}

//gli altri tuoi controlli

if($i==$total && $i==$j)
echo "quello che vuoi";
}


Questo mi piace di più. :)
Però il tuo if va prima di "continue" ed è sufficiente $j == $total. Almeno credo.
Grazie.

ndakota
01-06-2008, 22:39
si vero così come dici dovrebbe essere perfetto.. scusa ma senza provarlo è un po un casino..

ndakota
01-06-2008, 22:43
rilancio..

if (strlen($address[$i]["add"]) == 0 or (strtolower($tholoc[$i]["ln"]) !== strtolower($localityname) and strtolower($thodep[$i]["dln"]) !== strtolower($localityname)))
{
$j++;
if($j == $total)
echo "quello che vuoi";
continue;
}

altrimenti non hai l'ultima incrementata di j e non sarà mai uguale a total..

lore_83
01-06-2008, 22:56
rilancio..

if (strlen($address[$i]["add"]) == 0 or (strtolower($tholoc[$i]["ln"]) !== strtolower($localityname) and strtolower($thodep[$i]["dln"]) !== strtolower($localityname)))
{
$j++;
if($j == $total)
echo "quello che vuoi";
continue;
}

altrimenti non hai l'ultima incrementata di j e non sarà mai uguale a total..

Dicevo proprio quello :)
Grazie ancora, ciao.

ndakota
01-06-2008, 22:59
figurati, hai fatto tutto tu praticamente :muro: ciao

lore_83
01-06-2008, 23:02
figurati, hai fatto tutto tu praticamente :muro: ciao

eheh mica tanto...te hai acceso la lampadina!