Les 4

In deze les leert u wat een variabele is en hoe u variabelen kunt gebruiken in scripts.

De variabelen

Geen enkele programmeertaal kan zonder variabelen, en PHP maakt hierop geen uitzondering.

Wat is een variabel ?

Een variabele is een representatie van een data waarde.
Variabelen zijn plaatsen in het geheugen van de computer waar men bepaalde waarden kan bewaren. Deze waarden blijven dan beschikbaar gedurende de ganse uitvoering van een programma. Tijdens het uitvoeren van een script kun je deze plaatsen gebruiken om gegevens in te bewaren, aan te passen en nieuwe waarden toe te kennen, naargelang de behoefte van het script. De levensduur van deze waarden eindigen met het afsluiten van het programma of script. Een waarde kan een getal (integer) zijn, een tekenreeks (string), een waarheids test (boolean), een geheel getal van 0 tot 255 (byte), een getal met zwevende komma (float), Double, Date, Currency, Variant enz ...

In de meeste programmeertalen moet elke variabele in het begin gedefinieerd worden. Als je dergelijke programmeertaal aanleert, brengt dat al serieus wat stress mee van in het begin. Voor elke variabele die je gebruikt zonder deze vooraf te hebben gedefinieerd, krijg je een error.
Onder PHP geen stress, PHP werd in de eerste plaats geschreven voor het web, en werd ontdaan van alle niet nodige onderdelen van een klassieke programmeertaal. Je moet onder PHP je hoofd niet breken over welk type variabele het nu juist gaat, je gebruikt variabelen "on the fly" en PHP zal zelf wel uitmaken over welk type variabele het gaat. Onder PHP moet je geen variabelen op voorhand definiëren.


Onder PHP MOET elke variabele beginnen met het "$" teken. Vermijd accenten, spaties en namen van variabelen die eigen zijn aan de programmeertaal. Variabelen zijn hoofdletter gevoelig, $naam en $Naam of $NaAm zijn drie verschillende variabelen, die elk een andere waarde kunnen hebben. Variabelen een naam geven specifiek aan de programmeertaal mag niet, voorbeeld : $if, $while, $else enz ...


Een underscore "_" is toegelaten en dient in vele gevallen om een verboden ruimte in te vullen. voorbeeld $naam_serge. Maar genoeg theorie nu, wat zou je denken van een praktisch voorbeeld ?

In onze editor maken we volgende code aan :

<?php
$naam="Serge Terryn";
echo "Bedankt $naam voor deze lessen php !";
?>

En we slaan het voorbeeld op als variabel.php. En als we nu surfen naar variabel.php zie je de tekst "Bedankt Serge Terryn voor deze lessen php !"

En aktie !

Wat doen deze twee lijnen code ?

We initialiseren de string "Serge Terryn" aan de variabel $naam. De tweede lijn print de inhoud van de variabele af in een wat meer interessante omgeving.


Onthoud, de variabele staat links van de waarde die je eraan wilt toekennen.


Zoals je merkt, wordt de inhoud die we willen toekennen aan de variabele omringd door aanhalingsteken. Normaal is het verplicht om zo te werken met strings. Wil je een getal toekennen aan een variabele, moet deze niet tussen aanhalingstekens worden geplaatst. Mocht je vergeten die aanhalingstekens te plaatsen als je een string wilt definiëren als variabele, dan zal PHP daar niet moeilijk over doen en proberen er het beste van te maken, wat dan ook tot vreemde resultaten kan leiden.

voorbeeld 1

<?php
      $naam=serge;
    $getal=1;
    $totaal=$naam + $getal;
    echo "het getal = $totaal";
?>

PHP zal hier geen fout geven en leuk meedelen dat de waarde van het getal 1 is. Waarom ? Wel heel eenvoudig, $naam bevat zogezegd het getal serge, wat PHP niet kent, en hij geeft dan zelf de waarde 0 aan de variabele $naam.

En aktie !

voorbeeld 2

<?php
    $naam="serge";
    $getal=1;
    $totaal=$naam + $getal;
    echo "het getal = $totaal";
?>

Dit geeft opnieuw hetzelfde resultaat, het getal heeft de waarde 1. Je probeert hier een string op te tellen met een geheel getal. Opnieuw zal PHP de string als het getal 0 initialiseren.

En aktie !

voorbeeld 3

<?php
    $naam="serge";
    $getal="1";
    $totaal=$naam + $getal;
    echo "het getal = $totaal";
?>

Dit geeft opnieuw het getal 1 als resultaat. PHP probeert hier een waarde toe te kennen aan de strings, wat lukt voor $getal, want dit is gelijk aan 1, voor $naam vindt hij geen waarde en geeft terug de waarde 0.

En aktie !

Zo zie je maar dat het vergeten van aanhalingstekens niet tot fouten leidt, maar dat de uitkomst soms niet is wat je zou verwachten.


 Ziehier een voorbeeld dat wel correct werkt met of zonder aanhalingstekens :

<?php
    $naam="12";
    $getal="1";
    $totaal=$naam + $getal;
    echo "het getal = $totaal";
?>

En aktie !

Nu zal het totaal wel correct worden getoond, namelijk 13. Wat als we nu 12 vervangen door 1.2, wel dan zal de uitkomst 2.2 worden. Plaats je echter de waarde 1,2 (een komma ipv een punt), dan wordt de waarde van het getal 2. Waarom ? Wij zijn gewoon om onze decimalen aan te geven door middel van een komma.

In een programmeertaal worden decimalen aangeduid door middel van een punt.

Opnieuw probeert PHP van onze code er het beste van te maken, hij gaat de string na, en het eerste wat hij vindt dat op een getal lijkt is de 1 en de komma en de rest negeert hij gewoon, en 1 + 1 is nog steeds twee, ook onder PHP :-)

<?php
$naam="1,2";
$getal="1";
$totaal=$naam + $getal;
echo "het getal = $totaal";
?>

En aktie !

Wat doet het volgende voorbeeld ?

<?php
    $naam=1,2;
    $getal=1;
    $totaal=$naam + $getal;
    echo "het getal = $totaal";
?>

Nu heb je prijs. Eindelijk een parse error. Aangezien 1,2 geen getal is voor PHP kun je dus ook die waarde niet toekennen aan de variabele $naam en geeft PHP dan dienovereenkomstig een foutmelding.

En aktie !

Voor beginners is het voorbeeld van deze code een veel voorkomende fout.

Laten we nu terug eens onze code bekijken die we aanvankelijk gebruikten :

<?php
$naam="Serge Terryn";
echo "Bedankt $naam voor deze lessen php !";
?>

Voor iemand die al een programmeertaal kent, is dit niet logisch. De correcte schrijfwijze zou moeten zijn :

echo "Bedankt " + $naam + " voor deze lessen php !";

Wel onder PHP is dit niet nodig, en kan dus bijgevolg ook geen verwarring zaaien met het + teken bedoeld om iets op te tellen, zoals dit het geval is bijvoorbeeld onder JavaScript. Nu op iedere regel is een uitzondering.


Als je waarden recupereert uit functies of arrays gaat die vlieger niet meer op, waarop we later zullen terugkomen.

Nu terug onze enkele en dubbele quotes. Vervang nu eens op regel 3 van ons script variabel.php de dubbele quotes door enkele en sla het script dan op als variabel_enkel_quote.php en vraag dan de pagina op. Het resultaat daarvan is :

Bedankt $naam voor deze lessen php !

Zoals reeds gezegd, als je enkele quotes gebruikt, toont het script exact wat er tussen de enkele quotes staat, niet meer en niet minder.  In ons script variabel.php kijkt php binnen de string tussen dubbele aanhalingstekens, ziet $naam, en vervangt deze door de string Serge Terryn. Dit proces wordt variabele interpolatie genoemd. Om te voorkomen dat een string die op een variabele lijkt wordt geïnterpoleerd, kunt u ofwel enkele aanhalingstekens gebruiken, waarbinnen nooit interpolatie plaatsvindt, ofwel een backslash voor de variabele identifier plaatsen.
In begrijpbaar Nederlands : als je wilt dat $naam werkelijk wordt weergegeven in plaats van de inhoud van de variabele $naam, bereik je dat door echo '$naam'; of door echo "\$naam";
Deze laatste schrijfvorm wordt het escapen genoemd. Als we iets letterlijks willen weergeven tussen dubbele quotes, plaatsen we een backslash voor het teken dat we willen weergeven. PHP weet dan, dat het teken na de backslash letterlijk moet worden weergegeven. Als je bijvoorbeeld een prijs in dollars wenst weer te geven doe je dit als :

echo "Dit product kost \$ 100";


En wat als je nu een backslash wenst weer te geven ? Wel heel eenvoudig, we escapen de backslash met een backslash.

Voorbeeld :

echo "Hier tonen we een \\ backslash";  zal in je browser getoond worden als : Hier tonen we een \ backslash.

De concatenation operator Punt (.)

Als je meerdere strings op dezelfde lijn wenst weer te geven dan gebruik je de operator punt (.). Je kunt die natuurlijk altijd gebruiken, niemand belet het jou, maar het zal verplicht zijn deze te gebruiken als de waarden die je wilt afprinten afkomstig zijn uit een functie of array. We nemen nu terug ons voorbeeld en passen dit wat aan zodat we met de operator punt kunnen werken :

echo "Bedankt " . $naam  . " voor deze lessen php !";

Dit zal exact hetzelfde afprinten. Zoals je ziet plaats je geen aanhalingstekens rond de variabele $naam. Wat indien je die toch tussen aanhalingstekens plaatst ? Wel het resultaat blijft hetzelfde. Dat we er geen aanhalingstekens rond plaatsen heeft zijn bedoeling waar we later nog op zullen terugkomen. Ik zal dan wel op dat moment aangeven wat er fout zal gaan als we eenmaal zover zijn

De HTML break of een einde regel teken ?

De break <br> wordt veel gebruikt in HTML pagina's. De break zorgt ervoor om naar een nieuwe lijn over te gaan, let wel, in het venster van de browser. PHP kent ook zoiets, namelijk een new line. Om deze twee te vergelijken nemen we terug ons variabel.php voorbeeld, dat we wat gaan aanpassen als volgt :

<?php
$naam="Serge Terryn";
echo "Bedankt $naam voor deze lessen php !<br>";
echo "Ik hoop dat ik er iets van kan leren";
?>

 En we slaan dit vervolgens op als variabel2.php. Als we nu surfen naar variabel2.php, wordt de volgende tekst weergegeven in onze browser :

Bedankt Serge Terryn voor deze lessen php !
Ik hoop dat ik er iets van kan leren

En aktie !

Dit wordt dus correct weergegeven. De <br> die we hebben toegevoegd doet zijn werk goed in de browser. Maar wat als je nu de broncode van de pagina bekijkt ? Wel dat geeft dan :

Bedankt Serge Terryn voor deze lessen php !<br>Ik hoop dat ik er iets van kan leren

Zoals je ziet, geen enkel nieuwe lijn werd toegepast op de achtergrond. Als je vaak het commando echo gaat gebruiken, zal een lijn zonder onderbreking worden gevormd op de achtergrond. Als er iets fout gaat en je wilt even de pagina bron bekijken, wordt dit dan knap lastig. PHP heeft daarin iets voorzien, het commando new line \n.
We gaan dit even toepassen op ons script variabel2.php door regel 3 te veranderen in :

echo "Bedankt $naam voor deze lessen php !<br>\n";

En we slaan het script dan op als variabel3.php. Als we nu surfen naar variabel3.php is hetgeen je ziet in je browser identiek als het voorbeeld variabel2.php. Als je nu echter de paginabron opvraagt, ga je zien dat onze twee lijntjes nu ook onder elkaar staan. En dat leest wat vlotter.
Soms gaan je scripts niet doen wat je verwacht, en door de broncode op te vragen van een pagina, kan dit soms behulpzaam zijn bij het ontdekken van fouten. Om alles wat mooi te tonen in onze browser, gaan we veelvuldig gebruik maken van tables of andere opmaak mogelijkheden van html. Als alles dan op één lijntje wordt getoond als je de paginabron opvraagt, wordt het niet meer leukom die code te lezen. Ik geef jullie hierbij een simpel voorbeeld. Kijk niet naar de code, neem deze voor het ogenblik gewoon over.

<?php
$optellen="1";
$tel="25";
echo '<table>';
while ($optellen <= $tel) {
echo '<tr><td>Serge Terryn</td></tr>';
$optellen++;
}
echo '</table>';
?>

En sla dit op als voorbeeld7.php. Surf nu naar voorbeeld7.php, en in je browser zie je nu mijn naam 25 maal onder elkaar afgedrukt in je browser.

En aktie !

Bekijk nu eens de paginabron, en je zult dadelijk zien wat ik bedoelde met de leesbaarheid.  We veranderen ons script vervolgens in :

<?php
$optellen="1";
$tel="25";
echo '<table>' . "\n";
while ($optellen <= $tel) {
echo '<tr><td>Serge Terryn</td></tr>' . "\n";
$optellen++;
}
echo '</table>' . "\n";
?>

En sla het script vervolgens op als voorbeeld8.php. Als je nu surft naar voorbeeld8.php en de paginabron gaat opvragen, kun je niet anders dan het met mij eens zijn, dit leest toch veel vlotter. Nu, waarom schrijf ik niet echo '<table>\n'; ?  Het is de bedoeling hier dat \n geïnterpoleerd wordt als een nieuw regelteken, indien we deze niet tussen dubbele quotes plaatsen, gaat php gewoon \n weergeven in je browser, in plaats van het new line teken te interpreteren. Of je schrijft het op deze manier of je plaatst gewoon alles tussen dubbele quotes ( echo "<table>\n"; ).
Naast \n voor een nieuwe lijn kent php er nog een paar andere :

En aktie !

Het escape teken

      \n

      \r

       \t

Uitleg

Nieuwe lijn

Nieuwe paragraaf

Maakt een tab aan


Nu gaan we eens wat spelen met onze dubbele en enkele quotes en ons escape teken, de backslash. In onze editor nemen we de volgende code op :

<?php
$naam="Serge Terryn";
echo "Bedankt \"Serge Terryn\" voor deze lessen php !<br>\n";
echo "Of zo wordt dit ook correct geschreven<br>\n";
echo "Bedankt \"$naam\" voor deze lessen php !<br>\n";
echo "Of op deze wijze kan het ook<br>\n";
echo 'Bedankt "' . "$naam" . '" voor deze lessen php' . "<br>\n";
echo "Ik hoop dat ik er iets van kan leren<br>\n";
echo 'of ik hoop toch dat ik er iets van kan leren' . "<br>\n";
echo "Ik vind het fijn dat PHP \$ 0 kost<br>\n";
echo '$ 0 voor PHP is toch wel heel fijn !' . "<br>\n";
echo "Ik begin stilaan wel iets te begrijpen over het escape teken \\<br>\n";
echo 'Het escape teken \ is echt niet zo moeilijk hoor !' . "<br>\n";
?>

En we slaan het vervolgens op als escape.php.

En aktie !


Les 1 Les 2 Les 3 Les 4 Les 5 Les 6 Les 7 Les 8 Les 9 Les 10 Les 11 Les 12 Les 13 Home