Check lige dit script - optræder der en testvariable i den ?
arh sorry brugte en forkert fejl.. den rigtige er:
Notice: Undefined variable: life in C:\webserver\Apache2\htdocs\introduktion\Funktioner\scopetest2.php on line 5
the meaning of life is
Forskellen er at error_reporting er sat mindre restriktivt på webhotellet, så den ikke viser fejl af typen 'Notice'.
Læs også lide om variable scope
http://dk2.php.net/ (...)
Du kan genskabe den samme tilstand på din egen maskine ved at tilføje:
error_reporting(E_ALL ^ E_NOTICE);
øverst i dit script. Det kan osse sættes i php.ini, men det kan kun anbefales at køre med fuld error_reporting i udviklingsfasen.
To måder at gøre det på:
<?php
$life = 42;
function meaningOfLife() {
global $life;
echo "the meaning of life is $life<br>";
}
meaningOfLife();
?>
eller bedre:
<?php
$life = 42;
function meaningOfLife($life) {
echo "the meaning of life is $life<br>";
}
meaningOfLife($life);
?>
at det virker på nogle servere har nok noget at gøre med php.ini og register globals
plx -> Hvis du læser spørgsmålet igen fremgår det at den skulle udskrive:
'the meaning of life is'
så mon ikke det er et eksempel fra lærebogen, som netop fortæller noget om variable scope?
Hvis der skulle være tvivl, så prøv at se på filnavnet fra fejlmeddelelsen. ;-)
Og man kan jo så sige, at den fejlbesked er bare endnu en mulig konsekvens af at forsøge at bruge variable uden for deres scope. Og den er vel at mærke temmelig meget lettere at få øje på end bare en smule manglende tekst, så lad endelig være med at skrue ned for error_reporting, hvis du bruger din egen server til at udvikle scripts, der skal op på hotellet bagefter.
sorry.. havde helt svedt ud at jeg havde oprettet denne tråd..
PLX og Detox lig svar for points :)
(Må til at tjekke eksperten lidt oftere..)