salve a tutti
come posso fare per recuperare una variabile assegnata in una funzione ?
salve a tutti
come posso fare per recuperare una variabile assegnata in una funzione ?
si! si! mi sembra che sto programmando !
dichiari una variabile vuota prima della funzione con lo stesso nome della variabile che vuoi estrarre, nella funzione la variabile vuota viene aggiornata con il nuovo valore.
devi ritornarla dalla funzione usando l'istruzione return.
codice:funzione somma($a, $b) { $c = $a+$b; return $c; } $risultato = somma(1,2); echo $risultato; // 3;
Ciao
Non si può sapere il contenuto delle variabili assegnate in una funzione poichè vengono TUTTE distrutte al termine della funzione stessa. L'unica cosa che puoi ottenere è il valore di return
Quindi devi modificare la funzione in modo che restituisca quella variabile
Se vuoi che ne restituisca più d'una hai 3 possibilità
1) Passaggio parametro per riferimento
2) Restituzione di un array come risposta
3) Modificare variabili globali (evita)
1) Passaggio parametro per riferimento
Il risultato saràCodice PHP:<?php
function prova(&$x)
{
$x = "un valore"; // modifico $x nella funzione
$y = "fatto";
return $y;
}
$x = "";
$y =& prova($x);
echo $x;
?>
"un valore"
2) Restituzione di un array
RisultatoCodice PHP:<?php
function prova()
{
$x = "un valore"; // modifico $x nella funzione
$y = "un altro valore";
return array("x"=>$x,"y"=>$y);
}
$valori = prova();
echo $valori["x"]."
";
echo $valori["y"];
?>
"un valore"
"un altro valore"
visto che sei stato cosi preciso nella spiegazione faccio un aggiunta nel caso di restituzione di un array, puoi usare list per ottenere direttamente i valori che ti interessano, ti faccio un esempio:
ciaocodice:function data_in_pezzi($data) { $data_in_pezzi = explode("-",$data); } $data = "22-02-2007"; list($giorno, $mese, $anno) = data_in_pezzi($data);
nella funzione ho un if ed un else ,
l'else crea un messaggio di errore e lo voglio sommare in un qualcosa che tenga conto di tutti gli altri errori
avevo provato usando una sessione per recuperare il valore ma il sistema risultava complesso e difficile da gestire
la mia idea era quella di usare comunque qualcosa di simile
grazie
si! si! mi sembra che sto programmando !
intendi qualcosa del genere?
Ciaocodice:function controllaCampo($valore) { if($valore == {quellochevoglio}) { return true; } else { return "Codice Errore 120"; } } $errori = array(); $result = controllaCampo($valore1) if($result !== true) { $errori[] = $result; } $result = controllaCampo($valore2) if($result !== true) { $errori[] = $result; }
sto creando o almeno ci sto provando ! a costruire un sistema per il rilevameno degli errori
errori dati principalmente da due funzioni :
una controlla che la query vada a buon fine : in caso di errore da query error ...
l' altra molto più complicata controlla gli errori provenienti dalla pagina .. warning ...notice .....
ad ogni errore si crea un mess ad oc
e poi se il mess è presente o cio che gli contiene è presente apro una pagina di errore con tanto di mail in partenza !
il problema è riuscire a caricare il mess di errore dalle due funzioni in un qualcosa !!
si! si! mi sembra che sto programmando !
usare global !
che ne pensate ?
si! si! mi sembra che sto programmando !
Evito sempre di usare GOBAL, perchè prima o poi andrai certamente a coprire la variabile creata da qualcun altro
Per quanto mi riguarda $GLOBAL neanche esiste... se ho bisogno di qualcosa di "global" uso un oggetto singleton