Innehåll

PHP-skola

Inledning
Innan du börjar
Konfigurering
Ditt första script
Variabler
Arrays
If, Else, While och For
Funktioner
Att bolla variabler mellan sidor
Referenser

 


24/08-03 | Niklas "Nicke." Berggren | f1restorm@hotmail.com

Utskriftsvänligare versionUtskriftsvänligare version


If, Else, While och For

Om du kodat C förut känner du igen dessa fyra, de används på precis samma sätt.
En if-sats utför en jämförelse mellan två variabler, eller en variabel och ett värde.
Se följande exempel;

<html>
  <head>
    <title>PHP-kåd</title>

  </head>
  <body>
    <?php
      $variabel = 7;
      if($variabel == 7) {
        echo "Variabeln är 7\n";
      }
      else {
        echo "Variabeln är inte 7\n";
      }
    ?>
  </body>
</html>

Scriptet utför följande;
Först sätter scriptet variabeln $variabel till siffran 7, efter det utför den en jämförelse med hjälp av en if-sats. Har du läst den minsta gnutta engelska kan du nog gissa vad som händer. Först kollar scriptet om $variabel är lika med 7, stämmer detta så utför scriptet vad som nu finns mellan måsvingarna. I detta fallet skriver den ut texten "Variabeln är 7".
Else fungerar som en slags komplettering för if, den utför någonting om if-satsen ovanför inte skulle stämma. Om $variabel hade varit 9 hade vad som finns mellan måsvingarna i else-satsen skrivits ut, i det här fallet "Variabeln är inte 7".
I fortsättningen kommer jag inte visa de öppnande HTML-taggarna i mina exempel eftersom de är överflödiga, jag antar att ni fattat galoppen ;)

Om du vill kontrollera om två saker är identiska så använder du dubbla lika-med tecken, men du är inte begränsad till att jämnföra likhet, se följande tabell för en lista med s.k. operatorer.

==Lika med
!=Inte lika med
<=Mindre eller lika med
>=Större eller lika med
<Mindre än
>Större än

Ett while-block utför även den en jämförelse, men inte riktigt på samma sätt som ett if-block.

<?php
  $fnuffra = 10;
  while($fnuffra >= 4) {
    echo "$fnuffra <br />\n";
    $fnuffra = $fnuffra-1;
  }
  echo "Klar";
?>

Följande kod borde vara ganska enkel att förstå. Först sätts variabeln $fnuffra till värdet 10, efter det kommer ett while-block som säger att så länge $fnuffra är större än värdet 4 så ska vad som finns mellan måsvingarna utföras. 10 är som bekant större än 4 så scriptet kommer utföra vad som finns mellan måsvingarna. Den skriver ut värdet i fnuffra, vilket är 10, och drar sedan bort 1 från $fnuffra. $fnuffra är nu 9. 9 är större än 4 så vad som finns mellan måsvingarna utförs igen. Scriptet kommer fortsätta så här ända tills $fnuffra är 3, vilket inte är lika med eller större än 4. Då skrivs texten "Klar".

<?php
  for($i = 1; $i <= 12; $i++) {
   echo "Hej nr. $i <br />\n";
  }
?>

Här demonstreras ett for-block, vilket kan se lite knepigt ut. Kortfattat säger ovanstående kodstycke: "Sätt $i till ett, Medan $i är mindre eller lika med 12 så utförs vad som finns mellan måsvingarna, när ett varv är klart ökas $i med ett."
Just $i++ betyder "öka med ett". Ett $i-- betyder "minska med ett" och det hade gått lika bra med $fnuffra = $fnuffra-1 som $fnuffra-- i while-exemplet.
Resultatet av ovanstående kommer se ut som så här:

Hej nr. 1
Hej nr. 2
Hej nr. 3
Hej nr. 4
...
Hej nr. 11
Hej nr. 12

Varför skulle du vilja använda while eller for? Ibland händer det att du vill upprepa saker flera gånger och då är for() användbart. Jag visade tidigare hur arrays kan användas, nu kan vi använda for eller while för att leta info i en array.
Vi går tillbaka till mitt exempel med namn och addresser i varsin array, Vi återanvänder samma array och gör något lite mer vettigt med den; vi vill ha addressen till Asterix.

<?php
	$namn[0] = "Claes Nilsson";
	$namn[1] = "Mona Kroon";
	$namn[2] = "Asterix";
	$namn[3] = "Obelix";

	$address[0] = "StorStadsVägen 12, Storstaden";
	$address[1] = "The WestSide, New York";
	$address[2] = "Den galliska byn";
	$address[3] = "Den galliska byn";
	
	for($raknare = 0; $raknare <= 3; $raknare++) {
		if($namn[$raknare] == "Asterix") {
		   echo "Asterix har addressen $address[$raknare]";
		}
	}
?>

Här sätter vi först namn och addresser för några exempel, sedan kan vi på 5 rader kod hitta Asterix address.
I for-loopen sätts $raknare till noll först, och kollar om $namn[0] är "Asterix", detta stämmer ju inte, eftersom det är Claes Nilsson som är på nollan, så ingenting händer, samma gäller när $rakna är 1.
När $rakna är 2 däremot, så stämmer ju att $namn[2] är "Asterix", scriptet skriver då ut Asterix address från $address[2] och loopar vidare tills $rakna är 4, då loopen är slut.

Funktioner

En funktion kan i mångt och mycket jämnföras med en fabrik. Den tar in råvara och spottar ut en färdig produkt.
Tänk dig att du har en korvfabrik, den tar in råvara i form av kött och slaggprodukter, och spottar ut korv som ser smått ätbar ut, en funktion fungerar likadant!
En funktion tar emot variabler och data, och gör vad du vill göra med den. Här följer ett enkelt exempel på en funktion som tar emot ett tal, ökar talet med 12, och skickar ut resultatet av det.

<?php
	function Foo($tal) {
		$tal = $tal+12;
		return $tal;
	}
?>

Visst är det enkelt? Jag bryter nu ner koden åt er och förklarar den.
Rad ett deklarerar en funktion som heter Foo, den vill ta emot en variabel, som den kallar $tal. Rad två behöver ingen närmare förklaring och rad 3 skickar tillbaka resultatet till vem som kallade på funktionen.
Okay, vi har vår fabrik nu, då kan vi ge den lite arbete.

<?php
	$tal = 19;
	$nytt_tal = Foo($tal);
	echo $nytt_tal;
?>

Raden som lyder "$nytt_tal = Foo($tal)" innebär att i variabeln $nytt_tal kommer resultatet från funktionen Foo sparas. Vad som finns inom parentesen är vad vi skickar till vår funktion, i det här fallet heltalet 19. Väl inne i vår fabrik (funktion) ökas talet med 12 och resultatet 31 skickas tillbaka och skrivs ut. Inga svårigheter, eller hur?

PHP har en enorm massa användbara inbyggda funktioner, jag demonstrerar här en hembakad funktion som använder sig av en av de inbyggda funktionerna. Det är ju som såhär att vår funktion Foo inte kan veta att det är ett tal den tar emot, om den skulle ta emot t.ex. en text-sträng skulle ickebra saker(tm) hända. Så, vi använder oss av två av de inbyggda funktionerna för att kolla om det är ett heltal (integer) funktionen tagit emot.

<?php
		function Foo($tal) {
			if(is_int($tal) == TRUE) {
				$tal = $tal+12;
			}
			else {
				die("$tal är inte ett heltal!");
			}
			return $tal;
		}
?>

Vad händer här då? i den nya if-satsen används den inbyggda funktionen "is_int", den tar emot en variabel och undersöker om den är ett heltal, är detta sant (TRUE) så ökar den talet med 12 och skickar tillbaka resultatet.
Skulle $tal däremot inte vara sant utförs det som finns i else-blocket, den inbyggda funktionen "die" körs igång som berättar att variabeln $tal inte är ett heltal. Funktionen die() gör att allt slutar jobba, du får helt enkelt se texten inom citationstecknen, text-stringen, som skickades till die().


« Föregående Nästa sida »


24/08-03 | Niklas "Nicke." Berggren | f1restorm@hotmail.com

Utskriftsvänligare versionUtskriftsvänligare version

Diskutera denna artikeln i vårt forum!