- Home
- Categorie
- Coding e Sistemistica
- PHP
- Variabile indefinita
-
Variabile indefinita
Ho un piccolo rompicapo che per me risulta un MISTERO .
Per semplificarvi le cose posto 2 file molto corti che però vanno subito al nocciolo della situazione.
Primo file prova.php```
<?php
include"frog.func.php";
connect() or print("
No Connect !< /br>");
$_GET[s]=$s;
if(isset($s))
{
frog($s);
print("
Output della funzione frog stampato indirettamente:$s1
");
} else {
print("
Il valore per s non è definito");
}
?>Secondo file contenente funzione richiamata sopra + la connect() nel caso vogliate provare frog.func.php``` <?php function frog($s) { $s1=$s+1; print(" Output della funzione frog propria: **$s1** "); } function connect() { $connessione = @mysql_connect("host","username","password"); if ($connessione && mysql_select_db("my_db")) return ($connessione); return (FALSE); } ?>
Ebbene cosa succede in questo caso?
Il valore della variabile $s1 come mai viene stampato una sola volta?Se per caso editate i file per verificare ricordate di aggiungere ?s=678 alla fine dell'url. In questo modo
h t t p : / / localhost/prova.php?s=678 :bho:
-
Non sono molto esperto di php, ma penso che non puoi usare una variabile dichiarata in una funzione all'esterno della stessa, a meno che non fai un return di quella variabile oppure con le variabili globali, che purtroppo non ho ancora capito bene come funzionano....
:bho:
Non puoi fare così ?
print(" Output della funzione frog stampato indirettamente:**".frog($s)."** ");
function frog($s) { $s1=$s+1; print(" Output della funzione frog propria: **$s1** "); return $s1; }
-
il problema risiede esattamente nella visibilità della variabile chiamato anche scope della variabile.
leggi questo trafiletto
http://www.risorse.net/php/tutorial.php?P=7