PHP

Variabler och vektorer

I exemplen har vi stött på något som vi kallar variabler. En variabel i ett programmeringsspråk är en behållare för ett eller flera värden. Är det ett värde säger vi helt enkelt variabel och är det flera värden säger vi att det är en vektor eller array på engelska. T ex var $_POST som vi tittade på nyss en vektor som innehåller en rad med värden, som i sin tur är variabler. För att fylla på med ett värde i en variabel måste man göra en tilldelning. Man tilldelar alltså ett värde till en variabel. För att göra detta användes tilldelningsoperatorn =. En variabel i PHP skrivs som ett namn (även kallad identifierare) med tecknet $ (dollar).

$kontaktperson = "Erik Pettersson";

Här tilldelas alltså variabeln med namn kontaktperson värdet Erik Petterson, som är en sträng. Variabeln står alltid längst till vänster, följt av tilldelningsoperatorn och ett uttryck som innehåller ett värde till höger. Uttrycket i det här fallet är bara en enkel sträng men det kan också vara ett komplicerat uttryck på flera rader.

När det handlar om flera värden jobbar man med en vektor. Vi ska kolla på ett par exempel hur vi skapar och initierar (fyller på) en vektor.

$veckodagar[] = 'måndag';
$veckodagar[] = 'tisdag';
$veckodagar[] = 'onsdag';
…
$veckodagar[] = 'söndag';

Nu har vi skapat en vektor med 7 stycken element och varje element är en sträng med namnet på en veckodag. Eftersom vi inte gav några direktiv för hur nyckelvärdena skulle se ut kommer PHP att lägga till heltal med början på 0 som nyckelvärden. Nycklarna blir alltså 0-6 för veckodagarna. Värdet på $veckodagar[3] kommer att bli torsdag.

Ett annat sätt att skapa en likadan vektor är genom att använda sig av konstruktorn eller språkkonstruktionen array(). Då skickar man med de värden som vektorn ska bestå av:

$veckodagar = array('måndag', 'tisdag','onsdag', 'torsdag','fredag','lördag','söndag');

Precis som den förra vektorn vi skapade kommer nyklarna att ha värdena 0-6. Vill vi att nyckelvärdet ska börja på 1 och sen öka som vanligt med 1 skriver vi

$veckodagar = array(1 => 'måndag', 'tisdag','onsdag', 'torsdag','fredag','lördag','söndag');

Det går att det börja på vilket heltal som helst och inte bara på det första värdet utan på alla element i vektorn. Dessutom går att ha strängvärden på nycklarna. Om man inte fyller på med nyckelvärden för alla element i vektorn kommer PHP själv att lägga till 0 på det första ifyllda, 1 på det andra osv.

För de användare som har tillgång till rätt användarnamn och lösenord till Nikes sida ska vi nu skapa ett schema över hur träningen ser ut en given vecka. Först bygger vi bara en vanligt PHP-sida som vi senare ska lösenordsskydda.

<HTML>
	<HEAD>
		<LINK HREF="stilmall.css" TYPE="text/css" REL="stylesheet">
		<TITLE>Träning</TITLE>
	</HEAD>
<BODY>

<TABLE>
<TR>
	<TH>Veckodag</TH>
	<TH>Aktivitet</TH>
</TR>

<?php
$activities = array('Kattjakt', 'Spårning', 'Sök', 
		'Lydnad', 'Spårning', 'Lekar', 
		'Lydnad/Spårning');

foreach($activities as $key => $value)
{
	echo "<TR>";
		echo "<TD>$key</TD>";
		echo "<TD>$value</TD>";
	echo "</TR>"; 
}
?>
</TABLE>

</BODY>
</HTML>

Hur foreach fungerar kommer vi att titta på lite senare. För tillfället räcker det att konstatera att följande kod går igenom vektorn och plockar ut dess olika delar.

foreach($activities as $key => $value)
{
	echo "<TR>";
		echo "<TD>$key</TD>";
		echo "<TD>$value</TD>";
	echo "</TR>"; 
}

Vi sparar filen som traning.php och provar den

Resultat

Vidare vill vi att veckdagarna ska skrivas ut. Alltså ersätter vi nycklarna i vektorn med veckodagarnas namn. Gör det som en övning innan du tittar på resultatet!

Resultat

Kod