...:::Programozz kedvedre!:::...
Menü
 
HTML
 
PHP
 
A változók

A változók

A PHP-ban leggyakrabban a változókkal dolgozunk. Ezeket egy-egy önálló memória cellaként kell elképzelni, aminek megadhatjuk a nevét, a kezdeti tartalmát (értékét), a PHP futása közben pedig a különböző utasítások eredményeképpen ezt a kezdeti értéket fogjuk módosítani.
A változókat mindig a neve elé írt dollárjellel $ jelöljük, a nevét pedig tetszés szerint választhatjuk. A változók nevében csak az angol abc betűit (valamint az ASCII 127-255 közötti kódú karaktereket), vagy számokat használhatunk, de a változónév mindig betűvel kezdődjön.

<?php
  $valtozom = "valami szöveg";
?>

A változónevek kis/nagybetű érzékenyek, tehát $valtozó nem ugyanaz, mint $Valtozo.

Tanács:
Bár a PHP nyelvtana nem írja elő, a változókkal végzett műveletek előtt azokat ajánlott defíniálni, azaz megadni a kiinduló értékét és típusát.

fel...

Dinamikus változók

Ez eddig simán ment, ideje, hogy egy kicsit megcifrázzuk.

Eddig egy konkrét értéket rendeltünk egy változóhoz. Néha azonban szükségünk van arra, hogy a változó nevét is dinamikusan állíthassuk be. Ezt az alábbi módon tehetjük meg:

<?php

$a = "szeretem ";
$$a = "a php nyelvet";
print ($a . $ {$a});

?>

Ezt az eredményt kapjuk (3/2. példa).

Hasonló eredmény kaphatunk másképpen is:

<?php

$felhasznalo = "Valaki";
$tarolo = "felhasznalo";
print ($$tarolo);   // a $tarolo -ban a "felhasznalo" nevű változó értéke került.

?>

Ennek a kódnak az eredményét a fenti demó következő példájában találjuk (3/3. példa).

fel...

Hivatkozás változóra

Beletehetjük az $egyik_valtozo értékét a $masik_valtozo-ba is. Ilyenkor a $masik_valtozo értékének a másolata kerül az $egyik_valtozo -ra, mai a program további futása során nem változik magától.

<?php

$egyik_valtozo = "valaki";
$masik_valtozo = $egyik_valtozo;
print ($masik_valtozo);   // kiírja: "Valaki"

$egyik_valtozo = "akárki";
print $masik_valtozo;   // ez nem változott, kiírja: "Valaki"

?>

Nézd meg működés közben (3/4. példa).

Előfordulhat, hogy azt akarjuk, a $masik_valtozo értéke később is módosuljon, amikor az $egyik_valtozo értéke módosul. Ilyenkor nem az $egyik_valtozo értékét helyezzük bele a $masik_valtozo-ba egyszer, hanem csak hivatkozunk rá:

<?php


$egyik_valtozo = "Valaki";
$masik_valtozo = &$egyik_valtozo;
print ($masik_valtozo);   // kiírja: "Valaki"

$egyik_valtozo = "Akárki";   // megváltozik az $egyik_valtozo értéke
print ($masik_valtozo);   // most már megváltozik a $masik_valtozo is: "Akárki"

?>

Így működik (3/5. példa).

fel...

A változók típusai

A változókba behelyezett adatoknak többféle típusa lehet:

A fentiek közül a string, integer, float és a boolean skaláris változótípusok (skaláris = amit nem lehet kisebb darabokra bontani). A PHP támogatja még a nem skaláris array és object típusokat is.

Az adatok típusát azok definiálásakor a programozó határozza meg. A PHP az adattípusokat rugalmasan használja, azaz futásidőben átalakítja a környezettől függően szükséges típusra.

Adatunk érvényes típusát a getType() beépített függvény segítségével kérdezhetjük le és a setType() függvénnyel módosíthatjuk. Adatainkat az alábbi módon is meghatározhatjuk/módosíthatjuk:

  • (int), vagy (integer) - egésszé konvertál
  • (bool), (boolean) - logikai értékké konvertál
  • (real), (double), (float) - lebegőpontos számmá konvertál
  • (array) - tömbbé konvertál
  • (object) - objektummá konvertál

Például így:

<?php

$szam = "123";               // ez most 'string' típusú
print GetType($szam);        // kiírja, hogy 'string' típusú

print GetType((int)$szam);   // kiírja, hogy 'integer' típusú

print GetType($szam);        // ismét 'string'-nek látja
// tehát a változó típusa nem változott, csak a felhasználás helyén alakítottuk át.

?>
<?php

$szam = "123";               // ez most 'string' típusú
print GetType($szam);        // kiírja, hogy 'string' típusú

SetType($szam, "integer");   // most meg is változtatjuk a típusát

print GetType($szam);        // kiírja, hogy 'integer' típusú

?>

Jó tudni:
Űrlapból kapott változók mindig 'string' típusúak - akkor is, ha csak számot tartalmaznak.

fel...

Változók érvényessége

A már egyszer meghatározott (definiált) változónkat a kód futása során később is bárhol elérhetjük - mindig az aktuális értékével. Ez alól a szabály alól a függvények képeznek csak kivételt. Függvényeken belül csak a függvény paramétereiként beadott változók, valamint az ott definiált változók érhetők el. A függvényen kívülről csak az úgynevezett globális és szuperglobális (a PHP v4.x-től) változók érhetők el.

<?php

$valtozom = "Valaki";

function fuggvenyem()
   {
   print $valtozom;
   // nem ír ki semmit, mert nem látja ezt a változót a függvényből.

   print $_SERVER["REMOTE_ADDR"];
   // a $_SERVER[] egy szuperglobális tömb, mindenhol elérhető - ezt kiírja
   }

?>

A függvényekkel később többet is foglalkozunk.

fel...

Előre definiált változók

A PHP számos előre definiált változót kínál, amiben a futásidőben létrejött környezet egyes jellenómzői vannak meghatározva. Ezek az alábbi tömbökből érhetők el:

  • $GLOBALS -
  • $_SERVER, vagy $HTTP_SERVER_VARS - a webszerver által beállított változók
  • $_GET, vagy $HTTP_GET_VARS - HTTP GET kérés által létrejövő változók.
  • $_POST, vagy $HTTP_POST_VARS - HTTP POST kérés által létrejövő változók.
  • $_COOKIE, vagy $HTTP_COOKIE_VARS - HTTP sütikből (cookie) származó változók.
  • $_FILES, vagy $HTTP_POST_FILES - a fájlfeltöltés által létrejövő változók.
  • $_ENV, vagy $HTTP_ENV_VARS - a környezetből származó változók.
  • $_REQUEST - a HTTP GET, POST és COOKIE bementekből származó változók összessége.
  • $_SESSION, vagy $HTTP_SESSION_VARS - a munkamenethez tartozó változók.

Ezek mind globális (pl: $HTTP_SERVER_VARS) és szuperglobális (pl: $_SERVER) változók.
A szuperglobális változók a PHP 4.x verziótól léteznek, innen a régebbi globális meghatározás még érvényes, de használatuk már nem ajánlott.

Ennyi a változókról - pihenésképpen a következő fejezet a PHP állandóiról rövidebb lesz.

neve (en) neve (hu) leírása
string karaktersor szövegek kiírására használjuk, tartalmazhat bármilyen karaktert - betűt, számot, írásjelet. A szöveget mindig egyszeres, vagy dupla idézőjelek közé kell tenni!
Példa: $a = "valami szöveg";
integer egész szám értéke csak pozitív, vagy negatív egész szám lehet.
Példa: $a = 12;
float lebegőpontos szám tizedesszámokat írhatunk le vele. Tizedesjelként mindig pontot kell használni!
Példa: $a = 12.99;
boolean logikai érték értéke lehet igaz (TRUE), vagy hamis (FALSE)
Példa: $a = TRUE;
array tömb egy egymáshoz rendelt adatcsomag közös neve. Bővebben lásd a tömbökről szóló részben.
Példa: $a = array(18, 156, "valami");
object objektum
 

Bejelentkezés
Felhasználónév:

Jelszó:
SúgóSúgó
Regisztráció
Elfelejtettem a jelszót
 
XHTML
 
Linkek

Freewebsite
Programozás.lap.hu
Webmester.lap.hu

 

Dryvit, hõszigetelés! Vállaljuk családi házak, nyaralók és egyéb épületek homlokzati szigetelését! 0630/583-3168 Hívjon!    *****    A legfrissebb hírek a Super Mario világából és a legteljesebb adatbázis a Mario játékokról.Folyamatosan bõvülõ tartalom.    *****    Gigágá! Márton napján is gyertek a Mesetárba! Nemcsak libát, de kacsát is kaptok! Játsszatok velünk!    *****    A Nintendo a Nintendo Music-kal megint valami kiváló dolgot hozott létre! Alaposan nagyító alá vettem, az eredmény itt.    *****    Leanderek, Parfümök, Olajok, és Szépségápolási termékek! Használd a LEVI10 kupont és kapj 10% kedvezményt!Megnyitottunk    *****    Megjelent a Nintendo saját gyártású órája, a Nintendo Sound Clock Alarmo! Ha kíváncsi vagy, mit tud, itt olvashatsz róla    *****    Megnyílt a webáruházunk! Parfümök, Szépségápolási termékek, Olajok mind egy helyen! Nyitási akciók, siess mert limitált!    *****    Az általam legjobbnak vélt sportanimék listája itt olvasható. Top 10 Sportanime az Anime Odyssey-n!    *****    Pont ITT Pont MOST! Pont NEKED! Már fejlesztés alatt is szebbnél szebb képek! Ha gondolod gyere less be!    *****    Megnyílt a webáruházunk! NYITÁSI AKCIÓK! Tusfürdõ+Fogkrém+Sampon+Izzadásgátló+multifunkcionális balzsam most csak 4.490!    *****    Új mese a Mesetárban! Téged is vár, gyere bátran!    *****    Veterán anime rajongók egyik kedvence a Vadmacska kommandó. Retrospektív cikket olvashatsz róla az Anime Odyssey blogban    *****    Parfümök, Olajok, Párologtatók mind egy weboldalon! Siess mert nyitási AKCIÓNK nem sokáig tart! Nagy kedvezmények várnak    *****    Dryvit, hõszigetelés! Vállaljuk családi házak, nyaralók és egyéb épületek homlokzati szigetelését! 0630/583-3168 Hívjon!    *****    Aki érdeklõdik a horoszkópja után, az nem kíváncsi, hanem intelligens. Rendeld meg most és én segítek az értelmezésben!    *****    A Múzsa, egy gruppi élményei a színfalak mögött + napi agymenések és bölcseletek    *****    KARATE OKTATÁS *** kicsiknek és nagyoknak *** Budapest I. II. XII.kerületekben +36 70 779-55-77    *****    Augusztus 26-án Kutyák Világnapja! Gyertek a Mesetárba, és ünnepeljétek kutyás színezõkkel! Vau-vau!    *****    A horoszkóp elemzésed utáni érdeklõdés, nem kíváncsiság hanem intelligencia. Rendeld meg és nem fogod megbánni. Katt!!!    *****    Cikksorozatba kezdtem a PlayStation történelmérõl. Miért indult nehezen a Sony karrierje a konzoliparban?