Output, variabler och datatyper

Först ges en länk till hur man får igång PHP på sin dator, sedan handlar lektionen om hur man kommenterar sin kod och hur variabler, strängar, tal och andra datatyper fungerar - med andra ord grunderna i PHP.

Hur man får igång PHP

För att själv kunna testköra PHP-kod behövs lite jobb från din sida. Det är inte lika enkelt som med HTML - bara skapa en fil och öppna den med webbläsaren - men det är inte svårt att få igång, det tar bara lite tid. Kolla in artikeln Hur man sätter upp en egen servermiljö för att få reda på vad du behöver göra.

Vart lägger man PHP-koden?

PHP-koden ska finnas i filer med filändelsen .php. Filer med denna filändelsen kommer servern (om PHP är installerad på den) leta upp PHP-kod i och exekvera. Men allt som finns i filen behöver inte vara PHP-kod, för PHP-koden måste nämligen ligga emellan <?php och ?>.

Kommentar

Det fösta du ska lära dig är hur man kommenterar sin kod, vilket kan göras på tre olika sätt. Jämfört med HTML är det mycket viktigare att kommentera sin PHP-kod, för programmeringskod har en tendens att bli mycket längre och mycket mer komplicerad än simpel markeringskod. Här är de olika sätten (de grön-kursiva texterna i kodrutan nedan är kommentarer, tryck på länken "exempel1.php" överst i kodrutan nedan för att exekvera koden):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Exempel</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> </head> <body> <?php echo "<p>Detta är lite PHP-kod 1.</p>\n"; // Genom att sätta två snedstreck efter varandra så // blir allting efter på den raden bortkommenterat echo "<p>Detta är lite PHP-kod 2.</p>\n"; # Samma resultat uppnås med #-tecknet echo "<p>Detta är lite PHP-kod 3.</p>\n"; // Du kan sätta kommentarer efter PHP-kod på samma rad /* Om man vill kommentera på flera rader skriver man /*, vilket kommenterar allting efter tills man skriver dem i omvänd ordning */ echo "<p>Detta är lite PHP-kod 4.</p>"; ?> </body> </html>

Nu undrar du kanske vad echo gör, eller har du redan listat ut det? echo skickar i alla fall output till webbläsaren. Output är kod som webbläsarna använder för att visa hemsidan, alltså den kod som visas när du kollar på källkoden för en hemsida. PHP-koden i den första rutan ovan skickar alltså fyra paragrafer till webbläsaren, helt enkelt. Du vill kanske veta lite mer exakt om vad echo och koden därefter gör, och det ska du snart få lära dig, men som du ser påverkar inte dina kommentarer PHP-koden på något sätt, vilket den här kodbiten skulle visa.

Strängar, output och variabler

Som vi nämnde innan skickar echo output till webbläsaren. Output är oftast strängar (strängar är texter), och de ska omges av apostrofer ('-tecknet) eller citationstecken ("-tecknet). Efter varje "kommando" vi har givit åt PHP ska semikolon (;-tecknet) finnas. Det berättar för PHP att vi är klara med kommandot och att vi är redo att påbörja ett nytt. Liksom i de flesta andra språk spelar enterslag, tabbtryckningar och upprepade mellanslag ingen roll, så vi kan indentera vår kod hur vi vill.

Följande koder:

<?php echo "<p>En paragraf.</p>"; ?>
<?php echo '<p>En paragraf.</p>'; ?>

Resulterar båda i följande output:

<p>En paragraf.</p>

En paragraf.

Om vi vill kan vi spara en sträng i en variabel, och sedan hänvisa till att vi ska skicka variabelns värde som output. En variabel börjar med $-tecknet, följs sedan av namnet på variabeln, som i sin turs följs av ett likhetstecken och till sist strängen (självklart ska vi även meddela att vi sedan är klara med kommandot med ;-tecknet).

Det låter komplicerat, men se exemplet nedan så klarnar det nog lite.

Följande koder:

<?php $variabelNamn = '<p>En paragraf.</p>'; // Glöm inte ;-tecknet på slutet! echo $variabelNamn; // Skicka värdet som finns i $variabelNamn till webbläsaren ?>
<?php echo '<p>En paragraf.</p>'; ?>

Resulterar båda i följande output:

<p>En paragraf.</p>

En paragraf.

Som du ser omger man inte variabler med '-tecknet. Om vi gör det tror PHP att vi vill skicka strängen '$variabelNamn' till webbläsaren.

<?php $variabelNamn = '<p>En paragraf.</p>'; echo '$variabelNamn'; ?>
$variabelNamn

Det finns vissa regler för vad variabler får heta. De får till exempel inte börja med en siffra (0-9), men för att du inte ska få för mycket att tänka på som nybörjare råder vi dig att enbart använda tecknen a-z och A-Z då du döper dina variabler.

Man kan även slå ihop strängar och variabler. Det gör man genom att sätta en punkt emellan dem, vilket kallas konkatering. Vi kan slå ihop dem och spara dem i en ny variabel, men vi kan lika gärna skicka dem direkt till webbläsaren med echo.

Följande koder:

<?php echo '<p>Mitt förnamn är Peppe och mitt efternamn är L-G.</p>'; ?>
<?php // Skapa några variabler $förnamn = 'Peppe'; $efternamn = 'L-G'; echo '<p>Mitt förnamn är '.$förnamn.' och mitt efternamn är '.$efternamn.'.</p>'; ?>
<?php // Skapa några variabler $förnamn = 'Peppe'; $efternamn = 'L-G'; echo '<p>Mitt förnamn är '; echo $förnamn; echo ' och mitt efternamn är '; echo $efternamn; echo '.</p>'; ?>
<?php // Skapa några variabler $förnamn = 'Peppe'; $efternamn = 'L-G'; $skrivUt = '<p>Mitt förnamn är '.$förnamn.' och mitt efternamn är '.$efternamn.'.</p>'; echo $skrivUt; ?>

Resulterar alla i följande output:

<p>Mitt förnamn är Peppe och mitt efternamn är L-G.</p>

Mitt förnamn är Peppe och mitt efternamn är L-G.

Man kan även slå ihop variabler och variabler på detta sättet (och även strängar och strängar (men det görs ytterst sällan)).

Följande koder:

<?php $variabel1 = '<p>Detta är '; $variabel2 = 'en paragraf.</p>'; echo $variabel1.$variabel2; ?>
<?php echo '<p>Detta är '.'en paragraf.</p>'; ?>

Resulterar i följande output:

<p>Detta är en paragraf.</p>

Detta är en paragraf.

Bra att veta är att det finns en skillnad mellan strängar som omges av "-tecknet istället för '-tecknet. Den första PHP-koden som visades på denna sidan (den angående kommentarer) resulterade i fyra stycken paragrafer som skickades till webbläsaren. De skrevs ut såhär:

<?php echo "<p>Detta är lite PHP-kod 1.</p>\n"; echo "<p>Detta är lite PHP-kod 2.</p>\n"; echo "<p>Detta är lite PHP-kod 3.</p>\n"; echo "<p>Detta är lite PHP-kod 4.</p>"; ?>
<p>Detta är lite PHP-kod 1.</p> <p>Detta är lite PHP-kod 2.</p> <p>Detta är lite PHP-kod 3.</p> <p>Detta är lite PHP-kod 4.</p>

Detta är lite PHP-kod 1.

Detta är lite PHP-kod 2.

Detta är lite PHP-kod 3.

Detta är lite PHP-kod 4.

Som du ser har vi med "\n" på slutet på alla paragrafer förutom den sista, men varför har vi det? Jo, om vi använder "-tecknet för att ange strängar finns det några specialtecken vi kan använda, och just "\n" är tecknet för ett enterslag. Om vi inte har med det skulle endast paragraferna skickas till webbläsaren (och inga radbrytningar), och i källkoden skulle vår HTML-kod stå på en enda lång rad. Detta är ju inget problem för webbläsarna, de ignorerar ju enterslag och dylikt, men om du vid ett tillfälle vill gå in och kolla på källkoden så kan den se knepig ut i och med att den står på en lång rad, och nu vet du varför.

Följande kod:

<?php // Inget enterslag efter denna paragrafen echo "<p>Detta är lite PHP-kod 1.</p>"; // Notera att \n i strängar omgivna med enkla citationstecken inte resulterar i ett enterslag echo '<p>Detta är lite PHP-kod 2.</p>\n'; // Kommer att resultera i ett enterslag echo "<p>Detta är lite PHP-kod 3.</p>\n"; // Inget enterslag echo '<p>Detta är lite PHP-kod 4.</p>'; ?>

Resulterar i följande output:

<p>Detta är lite PHP-kod 1.</p><p>Detta är lite PHP-kod 2.</p>\n<p>Detta är lite PHP-kod 3.</p> <p>Detta är lite PHP-kod 4.</p>

Detta är lite PHP-kod 1.

Detta är lite PHP-kod 2.

\n

Detta är lite PHP-kod 3.

Detta är lite PHP-kod 4.

Ett annat specialtecken du kan använda i strängar omgivna med "-tecknet är "\t", som resulterar i en tabbtryckning.

Strängar omgivna med "-tecknet letar även upp variabler och ersätter dem med värdet de har tilldelats.

<?php $namn = 'Peppe L-G'; echo '<p>Mitt namn är '.$namn.'.</p>'."\n"; // Som vi vill echo "<p>Mitt namn är ".$namn.".</p>\n"; // Som vi vill echo "<p>Mitt namn är $namn.</p>\n"; // Som vi vill echo '<p>Mitt namn är $namn.</p>'; // Som vi INTE vill, fungerar inte med enkla citationstecken ?>
<p>Mitt namn är Peppe L-G.</p> <p>Mitt namn är Peppe L-G.</p> <p>Mitt namn är Peppe L-G.</p> <p>Mitt namn är $namn.</p>

Mitt namn är Peppe L-G.

Mitt namn är Peppe L-G.

Mitt namn är Peppe L-G.

Mitt namn är $namn.

Matematik

PHP stödjer även användandet av matematik. Du kan få variabler att anta matematiska värden på samma sätt som du gör med strängar, men matematiska tal ska inte omges av '-tecknet eller "-tecknet, för då tror PHP att de är strängar (texter), och dem kan man inte räkna med.

<?php $tal = 17; // $tal innehåller nu talet 17 echo '<p>Talet är: '.$tal.'.</p>'; ?>
<p>Talet är: 17.</p>

Talet är: 17.

Alla fyra räknesätten (addition, subtraktion, division och multiplikation) kan tillämpas, men man kan även använda operatorn "modulus". Modulus resulterar i resten av en division, och tecknet för modulus är "%".

<?php // Omge INTE talen med apostrofer eller citationstecken, de är inte strängar! $tal1 = 3; $tal2 = 2; // Addition $resultat = $tal1 + $tal2; echo '<p>'.$tal1.' + '.$tal2.' = '.$resultat."</p>\n"; // Subtraktion $resultat = $tal1 - $tal2; echo '<p>'.$tal1.' - '.$tal2.' = '.$resultat."</p>\n"; // Division $resultat = $tal1 / $tal2; echo '<p>'.$tal1.' / '.$tal2.' = '.$resultat."</p>\n"; // Multiplikation $resultat = $tal1 * $tal2; echo '<p>'.$tal1.' * '.$tal2.' = '.$resultat."</p>\n"; // Modulus, resten av en division $resultat = $tal1 % $tal2; echo '<p>'.$tal1.' % '.$tal2.' = '.$resultat.'</p>'; ?>
<p>3 + 2 = 5</p> <p>3 - 2 = 1</p> <p>3 / 2 = 1.5</p> <p>3 * 2 = 6</p> <p>3 % 2 = 1</p>

3 + 2 = 5

3 - 2 = 1

3 / 2 = 1.5

3 * 2 = 6

3 % 2 = 1

För att använda de olika räknesätten måste inte variabler arbeta med varandra, utan man kan använda tal direkt i sina uträkningar:

<?php $tal1 = 14; $tal2 = $tal1 + 10; echo '<p>$tal2 har nu värdet '.$tal2.'.</p>'; ?>
<p>$tal2 har nu värdet 24.</p>

$tal2 har nu värdet 24.

Uträkningarna kan även göras direkt i strängar, men då måste uträkningen omges av parenteser.

<?php $tal1 = 14; $tal2 = 6; // Oväntat resultat echo '<p>'.$tal1.' + '.$tal2.' = '.$tal1 + $tal2.".</p>\n"; // Väntat resultat echo '<p>'.$tal1.' + '.$tal2.' = '.($tal1 + $tal2).'.</p>'; ?>
6.</p> <p>14 + 6 = 20.</p>
6.

14 + 6 = 20.

Som du ser blir det helfel om man inte omringar uträkningen med parenteser.

Man kan även använda decimaltal. I Sverige använder vi komma-tecknet för att ange att ett tal är ett decimaltal, men i PHP, liksom de flesta andra programmeringsspråk, använder man punkt-tecknet.

<?php $pi = 3.1415; // Notera, punkt och inte komma $radie = 6; // Glöm inte parenteserna runt uträkningen då den anges direkt i strängen! echo '<p>Ytan på cirkeln med en radie på '.$radie.'cm är '.($radie*$radie*$pi).'cm².</p>'; ?>
<p>Ytan på cirkeln med en radie på 6cm är 113.094cm².</p>

Ytan på cirkeln med en radie på 6cm är 113.094cm².

Bra att veta är att PHP har många inbyggda matematikfunktioner. Du kan till exempel få fram pi med 14 decimaler med hjälp av funktionen pi, men även andra användbara funktioner finns, som till exempel sin, cos och log10. Om du vill se alla matte-funktioner kan du kolla in math-avdelningen i manualen. Du får lära dig mer om hur funktioner fungerar i en kommande lektion, men det kan vara bra att känna till att du har en massa matematikfunktioner till ditt förfogande.

Det finns även "genvägar" man kan använda för att addera eller subtrahera en variabel med 1. Då skriver man bara "++" eller "--" efter variabeln (och som vanligt även ;-tecknet).

<?php $tal = 10; echo '<p>$tal har värdet '.$tal.".</p>\n"; $tal++; // Addera med 1, samma som: $tal = $tal + 1 echo '<p>$tal har värdet '.$tal.".</p>\n"; $tal--; // Subtrahera med 1, samma som: $tal = $tal - 1 echo '<p>$tal har värdet '.$tal.'.</p>'; ?>
<p>$tal har värdet 10.</p> <p>$tal har värdet 11.</p> <p>$tal har värdet 10.</p>

$tal har värdet 10.

$tal har värdet 11.

$tal har värdet 10.

Om vi vill addera/subtrahera/dividera/multiplicera en variabel med ett annat värde kan man använda följande genvägar:

<?php $tal = 10; echo '<p>$tal har värdet '.$tal.".</p>\n"; $tal += 5; // Addera med 5, samma som: $tal = $tal + 5 echo '<p>$tal har värdet '.$tal.".</p>\n"; $tal -= 3; // Subtrahera med 3, samma som: $tal = $tal - 3 echo '<p>$tal har värdet '.$tal.".</p>\n"; $tal /= 4; // Dividera med 4, samma som: $tal = $tal / 4 echo '<p>$tal har värdet '.$tal.".</p>\n"; $tal *= 2; // Multiplicera med 2, samma som: $tal = $tal * 2 echo '<p>$tal har värdet '.$tal.'.</p>'; ?>
<p>$tal har värdet 10.</p> <p>$tal har värdet 15.</p> <p>$tal har värdet 12.</p> <p>$tal har värdet 3.</p> <p>$tal har värdet 6.</p>

$tal har värdet 10.

$tal har värdet 15.

$tal har värdet 12.

$tal har värdet 3.

$tal har värdet 6.

Du kan nu lite av grunderna i PHP, men med det du lärt dig hittills kan man inte ha mycket kul med. Läs därför kommande lektioner, där du får lära dig fler viktiga byggstenar i PHP som gör att man kan göra mycket roligare saker.

Gå till nästa lektion, Arrayer.