Datakurser
Aktuell vecka: 48

Tillbaka till toppen

PHP Variabler-Lokala-Globala-Superglobala

Lokala variabler lever bara inuti en funktion

I en funktion använder vi variabler för att lösa det vi vill utföra. Dessa hjälpvariabler lever enbart inuti funktionen, dvs de är lokala variabler. Så fort funktionen är klar släpps kontakten med de lokala variablerna tal1, tal2 och summa.

<?php 
function summering ($tal1, $tal2) { 
   $summa = $tal1+$tal2; 
   return $summa; 

$svar=summering(3.2, 4);
echo $svar;
?>
7.2

Globala variabler lever i hela programmet (UTOM i funktionerna)

Variabler som skapats i programmet(skriptet), utanför funktioner, är globala variabler.
Observera att variabeln summa som ligger i programmet men utanför funktionen är en ANNAN variabel, den är global, se exempel nedan.
Det är två olika variabler. Det visar sig att man kan ha en lokal variabel inuti en funktionsdeklaration som har samma namn som en global variabel utanför funktionen utan att de två variablernas värden blandas ihop.

<?php 
function summering ($tal1, $tal2) { 
   $summa = $summa+$tal1+$tal2; 
   return $summa; 


$summa = 99;
$svar=summering(3.2,4); 
echo $svar."<br>"; 
echo $summa; 
?>
7.2
99
Du som har programmerat C/C++, C# eller Java har troligtvis utnyttjat globala variabler som är tillgängliga både utanför och även inuti funktionerna. Medans här i PHP är de globala variablerna helt okända inuti funktionerna.

Hur kan man med hjälp av en funktion ändra flera variabler utanför funktionen?
JO MED REFERENSER.

<?php 
function changeAll (&$x, &$y, &$z) { 
   $x=111; 
   $y=222;
   $z=333;


$tal1 = 4;
$tal2 = 5;
$tal3 = 6;
echo "$tal1 $tal2 $tal3"; 
changeAll ($tal1, $tal2, $tal3)
echo "$tal1 $tal2 $tal3"; 
?>
4 5 6
111 222 333

Nödlösning - Globala variabler som lever i hela programmet (ÄVEN i funktionerna)

Vid denna nödlösning så använder vi det det reserverade ordet "global" som styr om egenskaperna på vår variabel. Undvik att använda "global".

<?php 
function summeringX ($tal1, $tal2) { 
   $summaX = $summaX+$tal1+$tal2; 
   return $summaX; 


global $summaX = 99;
$svarX=summeringX(3.2,4); 
echo $svarX."<br>"; 
echo $summaX; 
?>
7.2
99
OBS! Vi ska inte använda global. Men jag nämner det så vi vet dess betydelse när vi ser kod på nätet. Kan i värsta fall användas som en nödlösning.

Superglobala variabler lever i hela programmet (ÄVEN i funktionerna)

PHP har några superglobala variabler som finns tillgängliga överallt, såväl ute i huvudskriptet som inne i funktionerna. Exempel på sådana variabler är vektorerna $_GET[], $_POST[], $_REQUEST[], $_COOKIE[] och $_SESSION[] som gör medskickade data från klienten och även variabler från servermiljön tillgängliga överallt hela PHP-skriptet.

Källor, referenser, bra länkar

www.php.net
w3schools.com/php/

Utvecklingsmiljöer

Labbservern

PHP 7.2, MariaDB 5.5 och Apache 2.4.6

Laragon

Apache 2.4, MySQL 5.7, PHP 7.4

Lösningsförslag

Alrik's