If

minatore

Utente Attivo
25 Set 2007
410
0
0
Ciao a tutti, rieccomi con i miei problemi
l'if appena letto sembrava facile da gestire, che mi sono cimentato in un esercizio per vedere se avevo capito<?php
$giorni_della_settimana = array( 'lunedi', 'martedi', 'mercoledi', 'giovedi', 'venerdi', 'sabato', 'domenica' );

$giorno = 'sabato';

for( $i = 0; $i = $giorni_della_settimana; $i++ )
{
if( $i == $giorno )
{
print" Oggi è $giorno";
}
else
{
print" Oggi non è $giorno";
}
}
?>

perchè mi da all'infinito Oggi non è sabato?
E' vero che il ciclo for nei primi controlli non trova l'uguaglianza, ma alla fine penso che troverà la $giorno
O forse ho impostato male l'esercizio?
grazie in anticipo
 
Ultima modifica:
Gira all'infinito perchè il ciclo for ha bisogno di una valore numerico tu invece gli passi un array.

$i non potrà mai essere uguale a $giorno perchè è un numero, o meglio dovrebbe esserlo se il ciclo fosse scritto così:

PHP:
for( $i = 0; $i <7; $i++ )

ma otterresti di stampare soltanto la scritta:

"Oggi non è sabato" sette volte di seguito, perchè appunto $i non sarà mai uguale a $giorno.

Prova invece così:
PHP:
if(in_array($giorno, $giorni_della_settimana))
{
print" Oggi è $giorno";
}
else
{
print" Oggi non è $giorno";
}
 
Ciao, in_array controlla se all'interno di un array è presente un particolare elemento, e su questo ci siamo. Studiando leggo sempre che i cicli servono per fare dei controlli, allora mi sono detto voglio fare anche io un controllo con un ciclo for. Vista la sintassi procediamo nella pratica. Nella risposta che mi hai dato in precedenza, sono con te, facendo così gli passo un indice, allora cosa ho fatto,

$settimana = array( 'lunedi', 'martedi', 'mercoledi', 'giovedi', 'venerdi', 'sabato', 'domenica' );

$giorno = 'sabato';
for($i=0; $i<=count($settimana); $i++)
{
print" $settimana[$i]<br>
}
A questo punto non ho più l'indice, ma l'elemento presente nell'array
poi sono andato avanti con l'esercizio ed ho fatto

$settimana = array( 'lunedi', 'martedi', 'mercoledi', 'giovedi', 'venerdi', 'sabato', 'domenica' );

$giorno = 'sabato';

for($i=0; $i<=count($settimana); $i++)
{
if($settimana[$i] == $giorno)
{
print"oggi è $giorno";
}
else
{
print" peccato oggi non è $giorno";
}
}
Qual è il risultato? sette volte "peccato oggi non è $giorno"

Perchè?
Grazie in anticipo
 
No, in pratica otterresti:
PHP:
peccato oggi non è sabato
peccato oggi non è sabato
peccato oggi non è sabato
peccato oggi non è sabato
peccato oggi non è sabato
oggi è sabato 
peccato oggi non è sabato

Perchè almeno in un caso il confronto restituisce TRUE

Però la condizione deve essere espressa come "$i<count($settimana);" e non "$i<=count($settimana);" diversamente avresti un errore di offset