- Home
- Categorie
- Coding e Sistemistica
- Coding
- Funzione creata da utente e cicli
-
Funzione creata da utente e cicli
Ciao a tutti,
sto imparando a usare le funzioni che mi sono molto utili per i miei siti.Avrei bisogno di usare una funzione con all' interno 2 cicli, ma non funziona.
Nelle funzioni si possono inserire dei cicli for e foreach?
Qui vi lascio il codice (che fuori dalla funziona funziona):
[PHP]function pertour ($chi) {
if ($chi['tour']=='S'){
for ($mul = 1; $mul <= 6; ++$mul) {
$dataout='dataout'.$qqq;
$datain='datain'.$qqq;
$cittatour='cittatour'.$qqq;
if ($chi[$dataout] >= $oggi and $chi[$datain] <= $oggi){
foreach ($allcity as $k){
if ($k['Idcitta']==$chi[$cittatour]){
return $k['nomecitta'];
}
}
}
}
}
}[/PHP]Dove sbaglio?
-
Ciao Ivan88,
ma $qqq dove è stata definita? E $oggi?
-
Sì sono entrambe definite.
Per accorciare il codice non ho postato questa parte:
[PHP]if ($mul==1) {
$qqq='';
} else {
$qqq=$mul;
}[/PHP]
che si colloca dopo il for
-
Riducendo la funzione a livello base ho trovato l' errore.
[PHP]
$oggi = date('Y-m-d');function pertour () {
$datain='2011-09-18';
$dataout='2011-09-21';
if ($dataout >= $oggi and $datain <= $oggi){
return 'Funziona';
}
}echo pertour();[/PHP]
Così non funziona, ma se inserisco la riga $oggi dentro la funzione va.
Va inoltre togliendo il secondo richiamo a $oggi
[PHP]if ($dataout >= $oggi)[/PHP]Avete idea di come mai?
-
$oggi non è esiste all'interno della funzione, ma è esclusivamente all'esterno.
-
Il motivo è lo scope della variabile $oggi:
dentro la funzione non è definita e quindi richiamarla ti genera l'errore.per utilizzare una variabile esterna alla funzione all'interno della funzione stessa gliela devi "far conoscere", aggiungi dentro alla funzione il codice:
[PHP]
global $oggi;
[/PHP]oppure devi creare la funzione passandogli il parametro
[PHP]
$oggi = date('Y-m-d');function pertour ($param1) {
$datain='2011-09-18';
$dataout='2011-09-21';
if ($dataout >= $param1 and $datain <= $param1){
return 'Funziona';
}
}echo pertour($oggi );
[/PHP]