qualitum logo
Variabler och konstanter
Allmänt om variabler

Variabler är det första du kommer i kontakt med i alla programmeringsspråk. Om man snabbt skall definiera vad en variabel är så är det en behållare för information. I detta kapitel skall vi gå igenom grunderna för hur du hanterar variabler. Att säga att det är ett heltäckande kapitel om variabler vore att ljuga, allting i PHP (såväl som andra språk) handlar om variabler i olika former så se detta som en introduktion.

Innan vi börjar

Innan vi drar igång genomgången av variabler finns det en sak vi måste gå igenom, kommentering. Att kunna kommentera sina skript är helt nödvändigt för att kunna skriva begriplig kod. I skolan har jag också genomgående försökt att kommentera mycket för att kodexemplen skall bli enklare att förstå.

Vad är då en kommentar? Jo, en kommentar är ett stycke kod som inte kommer tolkas av PHP. Koden körs alltså inte som vanlig kod utan hoppas över av PHP. Detta är användbart om man vill förklara vad ett visst kodstycke gör, eller vid felsökning då man helt enkelt vill "plocka bort" viss kod från körningen. PHP förespråkar två sätt att kommentera.

Exempel

PHP:
1:
<?php
2:
 
3:
// En kommentar på en rad
4:
 
5:
/* 
6:
   En kommentar som 
7:
   kan sträcka sig över fler rader 
8:
*/
9:
 
10:
?>


Den första metoden som används ovan kommenterar bort allting efter de båda snedstrecken på den rad de skrivs. Metoden med /* samt */ kommenterar bort allting med start från /* fram till det att kommentaren avslutas med */. Vill du se mer exempel på kommentarer finns det i exemplen nedan.

Tilldelning och användning

Som jag nämnde i inledningen så är en variabel en behållare för information. I PHP till skillnad från många andra programmeringsspråk görs ingen skillnad mellan olika typer av variabler. För att ta exemplet C++ så måste du där deklarera variabeln innan du använder den, du måste då bestämma dess typ och dess namn. Detta behövs inte i PHP utan här känns variabler igen med hjälp av dollartecknet ($). Du behöver alltså inte deklarera vilken typ av variabel du jobbar med, ändå finns det typer som PHP använder internt, dessa är: heltal, flyttal, strängar, vektorer och objekt.

Nedan åskådliggör jag skillnaderna mellan ett språk där du måste deklarera din variabel och PHP. Har du aldrig tidigare kommit i kontakt med C++ kan du helt enkelt hoppa över exemplet. Bli inte förvirrad om du inte förstår syntaxen, exemplen är skapade för att vara körbara och innehåller därför element som vi ännu inte hunnit gå igenom.

C++

KOD:
1:
// Testat under Borland C++
2:
#include <iostream.h>
3:
#include <conio.h>
4:
 
5:
void main(void)
6:
{
7:
   
8:
    /* Deklarering */
9:
 
10:
    int heltal;      // Ett heltal
11:
    float flyttal;   // Ett flyttal   
12:
    char bokstav;    // En bokstav
13:
    char strang[20]; // En sträng på 20 tecken
14:
    int vektor[10];  // En helttalsvektor innehållandes 10 element.
15:
 
16:
    /* Tilldelning, kunde gjorts i samband med deklarering */
17:
    heltal = 1;
18:
    flyttal = 1.22;
19:
    bokstav = 'a';
20:
    strang = "Fredrik Johansson";
21:
 
22:
    // Tilldelning via en for-loop.
23:
    for (int i=0; i<10; i++) {
24:
        vektor[i] = i;
25:
    }
26:
 
27:
    cout << "Då var deklarering och tilldelning klar" << endl;
28:
    getch();
29:
}



PHP

PHP:
1:
<?php
2:
 
3:
/* Deklarering ej nödvändigt, går direkt på tilldelning */
4:
 
5:
$heltal 1
6:
// $heltal innehåller nu helttalsvärdet 1.
7:
 
8:
$flyttal 1.22
9:
// $flyttal innehåller nu flyttalsvärdet 1.22.
10:
 
11:
$bokstav 'a'
12:
// $bokstav innehåller nu bokstaven a.
13:
 
14:
$strang 'Fredrik Johansson'
15:
// $strang innehåller nu Fredrik Johansson.
16:
 
17:
$vektor = array(12345678910); 
18:
// $vektor innehåller nu en vektor innehållandes tio element.
19:
 
20:
echo 'Då var tilldelningen klar, inga felmeddelanden genererade?'
21:
 
22:
?>


Som sagt, de två exemplen ovan är mest till för redan frälsta, för dig som är nybörjare ter de sig förmodligen obegripliga. Något som du dock kan titta på är tilldelningen i PHP (utan att jämföra med C++). Du ser hur man använder dollartecknet ($) för att markera att det är en variabel. Vektorer (arrays) kommer vi att behandla i ett senare kapitel men de tas med redan här då de är en typ av variabler i PHP.

Konstanter i PHP

Nu har du lärt dig de absoluta grunderna i variabelhantering. Passande är då att nämna det som i PHP och andra programmeringsspråk kallas för konstanter. De fungerar i princip som variabler men är, just det, konstanta. När du väl tilldelat dem ett värde går detta inte att ändra på. För att PHP skall veta att du vill skapa en konstant krävs en form av deklarering. Jag visar detta med hjälp av ett exempel nedan.

Konstantdeklarering

PHP:
1:
<?php
2:
 
3:
// Vi skapar en konstant med namnet BGCOLOR och ger den ett värde
4:
define("BGCOLOR""#FFFFFF"); 
5:
 
6:
echo BGCOLOR
7:
 
8:
?>


Här kan du se hur vi först deklarerar konstanten samtidigt som vi tilldelar den ett värde och sen hur den skrivs ut via echo. Konstanter i PHP skrivs i regel med stora bokstäver, detta är dock inget tvång utan en praxis som tillämpas av de flesta PHP-programmerare. Denna praxis tillämpas inte bara i PHP utan i de flesta andra programmeringsspråk också.

Skillnader mellan vanliga variabler och konstanter:

  • Konstanter har inget dollartecken ($) framför sig;
  • Konstanter kan endast deklareras med hjälp av define() funktionen, inte genom enkel tilldelning;
  • Konstanter kan deklareras och kommas åt varsomhelst utan hänsyn till variablers "omfångs" (eng: scoop) regler;
  • Konstanter kan inte omdeklareras eller omdefineras om de väl har blivit satta; och
  • Konstanter kan endast innehålla skalära värden (skalära värden är heltal, flyttal, strängar).


Listan ovan är en översättning av motsvarande lista i PHP-manualen (kapitel 4, Constants).

Inbyggda konstanter

PHP innehåller en mängd fördefinierade konstanter. De sätts av PHP innan körningen av ditt skript startats och du kan därför använda dem direkt.

Nedan finner några exempel.

Konstanter för felhantering:

Citat:
E_WARNING (heltal)
E_NOTICE (heltal)
E_USER_ERROR (heltal)
E_USER_WARNING (heltal)
E_USER_NOTICE (heltal)
E_ALL (heltal)

Kort sagt är detta konstanter som du använder för att bestämma vilka fel som skall rapporteras till webbläsaren och vilka fel som inte skall rapporteras. Skriver du ut dem med echo märker du att det är siffervärden. Konstanterna är skapade för att underlätta för dig så att du enklare skall kunna komma ihåg de olika felrapporteringsnivåerna. Det är viktigt att komma ihåg att dessa konstanter inte innehåller några konstigheter. Testa och skriv ut dem för och se vad det är, det är endast skapade för att underlätta för dig som PHP-programmerare.

Användbara funktioner för variabler
Avsnittet under denna underrubrik är hämtat från den ursprungliga PHP-skolan. Den är skapad av mig men avsnittet är alltså inte nyproducerat, endast redigerat och anpassat.

PHP erbjuder en uppsjö med funktioner som du kan använda dig av för att antingen få reda på saker om din variabel eller påverka den på något sätt. En full genomgång om hur du använder dig av funktioner kommer i kapitlet om funktioner. Men redan nu presenterar vi några funktioner som du kan komma att ha användning av i dina PHP-skript.

gettype()
Denna funktion ger dig typen på den variabeln som kontrolleras. Funktionen kan returnera något av följande:

Citat:
integer (Heltal)
double (Flyttal)
string (Sträng)
array (Vektor)
object (Objekt)
class (Klass)
unknown type (Okänd typ)

Exempel

PHP:
1:
<?php
2:
 
3:
// Skapar en helttalsvariabel
4:
$ditt_nummer 2
5:
 
6:
// Testar den
7:
if(gettype($ditt_nummer) == 'integer') {
8:
    echo 'Detta är ett heltal!';
9:
}
10:
 
11:
?>

Mer information om villkorssatsen if finner du i kapitlet om villkorssatser. Till dess kan vi säga att den validerar ett uttryck och kör den koden som finns inom klamrarna om den finner uttrycket sant. I detta fall fungerar det på följande sätt: om variabeln "$ditt_nummer" är ett heltal (integer) så körs koden "echo 'Detta är ett heltal!';" som skriver ut den texten som finns inom citationstecknen.

settype()
En funktion som du kan använda för att ändra datatyp på en variabel.
Den kan till exempel användas för att omvandla ett heltal till ett flyttal, eller tvärt om som visas nedan.

Exempel

PHP:
1:
<?php
2:
 
3:
//Detta gör $a till ett flyttal med värdet 10,87
4:
$a 10.87;
5:
 
6:
// Nu blir $a en variabel av datatypen heltal med värdet 10 
7:
settype($a'integer');
8:
 
9:
// Skriv ut resultatet:
10:
echo $a;   
11:
 
12:
?>

Observera att vissa data naturligtvis går förlorade när du byter datatyp från flyttal till heltal. Det används inte heller några avrundningsregler utan värdet trunkeras (klipps av). Hade avrundning skett hade $a givetvis fått värdet 11 men med trunkering så får variabeln $a värdet 10.

isset()
isset() är en funktion för att kontrollera om en variabel har tilldelats ett värde eller inte (tänk på: "is set" som på svenska betyder "är satt"). Detta går oftast att göra med villkorssatsen if ($variabel), men det finns en skillnad. Eftersom allt som inte är noll i PHP räknas som sant så skulle if-satsens kodblock utföras så länge som $variabel inte är noll.
Men om $variabel har satts till noll med avsikt? Då skulle en if-sats inte räcka. Därför är det oftast klokare att använda funktionen isset().

Exempel

PHP:
1:
<?php
2:
 
3:
// Vi sätter en variabel till noll.
4:
$variabel 0
5:
 
6:
// Testar den med endast en if-sats.
7:
if($variabel){
8:
    echo 'Detta kommer aldrig att skrivas ut'
9:
}
10:
 
11:
//Testar den med en isset() tillsammans med en if-sats.
12:
if (isset($variabel)){
13:
    echo 'Detta kommer däremot att skrivas ut';
14:
}
15:
 
16:
?>

Det var allt om variabler för denna gång. Variabler hanteras dock vad du än skall göra i PHP, så du kommer att se mycket mer av dem i skolan framöver.
Kapitel 4 av 8
[ 1 2 3 4 5 6 7 8 ]
Välkommen Anonymous
Logga in
Registrera
Snabblänkar
Markera alla forum som lästa
Skriptarkivet [86 av 97]
Visa nya inlägg
Visa dina inlägg
Visa obesvarade huvudinlägg
Läs vår skola
  Introduktion
  Programmera i webbmiljö
  Installationen i Windows
  Variabler och konstanter
  Vektorer
  Operatorer
  Villkorssatser
  Slingor
Statistik
Registrerade medlemmar: 19360
Inlägg totalt: 715256
Senaste medlem: Kerns
Online
Besökare just nu: 10,
0 registrerade,
0 dolda och
10 gäster
Besökare som mest var 337 den 2007-07-16 20:05

Våra medlemmar
Inloggade medlemmar
Bra att veta
Förhållningsregler
Trivselregler
phpBB-FAQ
För dig som vill länka
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic
qualitum logo