Erik Ginnerskov skrev:
>> [1] Med de specielle operatorer .=, += mfl. gaelder reglen ogsaa, da
>> man kan sige at lhs-operanden ogsaa optrader paa hoejre side
>> semantisk set.
>Det er sikkert rigtigt, men desværre sort snak for mig - endnu.
Det er nu ikke så svært endda:
<?
$third = $first.$second;
?>
Det giver advarslen fordi $first og $second er ukendte variable.
<?
$first = "Begynd";
$second = " slut";
$third = $first.$second;
?>
Ingen advarsel. Både $first og $second har fået en værdi før de
bruges.
Om operatoren +=:
I C-agtige sprog og altså også i PHP kan man skrive
$result += 7;
Det svarer helt til
$result = $result + 7;
Hvis $result er ukendt, giver det selvfølgelig samme advarsel som
de andre eksempler.
Det korte og det lange er at alle udtryk der står på højre side
af lighedstegnet, skal være veldefinerede for at man ikke får en
advarsel. Systemet vil forsøge at rette op på fejlen idet det
tildeler ukendte varable en nulværdi (0, "" eller lignende), men
det er jo kun et gæt.
Det er en god idé at skrive programmet så advarslen ikke kommer -
uanset om det virker efter hensigten. Dels er det en god vane,
dels er det ikke sikkert at det i *alle* tilfælde vil virke efter
hensigten, men måske kun lige i dem man får testet.
Somme tider skyldes advarslen at man har glemt at indsætte en
startværdi. Det kan f.eks. være at man egentlig ville begynde med
at sætte $result til 100, men blot har glemt at skrive den linje.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO:
http://fiduso.dk/