Listați toate variabilele php. Variabile în PHP. Operații cu variabile PHP

acum 13 ani

Un pic la care trebuie să fii atent:

Dacă dezactivați RegisterGlobals și înrudite, apoi utilizați get_defined_vars(), este posibil să vedeți ceva de genul următoarele:

Matrice
[ GLOBALS ] => Matrice
[ GLOBALS ] => Matrice
*RECURSIUNE*
[ _POST ] => Array()
[ _GET ] => Array()
[ _COOKIE ] => Array()
[ _FILES ] => Array()
)

[ _POST ] => Array()
[ _GET ] => Array()
[ _COOKIE ] => Array()
[ _FILES ] => Array()

)
?>

Observați că $_SERVER nu este acolo. Se pare că php încarcă $_SERVER-ul superglobal dacă este folosit undeva.

printeaza "

". htmlspecialchars(print_r(get_defined_vars(), true))."
" ;
printeaza "
" . htmlspecialchars (print_r ($_SERVER , true )) ."
" ;
?>

Și apoi $_SERVER va apărea în ambele liste. Bănuiesc că nu este chiar o problemă, pentru că nimic rău nu se va întâmpla în orice caz, dar este o curiozitate interesantă, totuși.

acum 6 ani

Deoarece get_defined_vars() primește variabilele doar în punctul în care apelați funcția, există o modalitate simplă de a obține variabilele definite în domeniul curent.

// În partea de sus a scriptului dvs. php
$vars = get_defined_vars();

// Acum fă-ți treaba
$foo = "foo" ;
$bar = "bar" ;

// Obține toate variabilele definite în domeniul curent
$vars = array_diff(get_defined_vars(), $vars);

ecou"

"
;
print_r($vars);
ecou"
" ;
?>

acum 15 ani

Iată o funcție care generează un raport de depanare pentru afișare sau e-mail
folosind get_defined_vars. Excelent pentru a obține un instantaneu detaliat fără
bazându-se pe intrarea utilizatorului.

funcția generateDebugReport ($method, $defined_vars, $email = "undefined" )(
// Funcție pentru a crea un raport de depanare pentru afișare sau e-mail.
// Utilizare: generateDebugReport(method,get_defined_vars(),email);
// Unde metoda este „browser” sau „e-mail”.

// Creați o listă de ignorare pentru cheile returnate de „get_defined_vars”.
// De exemplu, HTTP_POST_VARS, HTTP_GET_VARS și altele sunt
// redundant (la fel ca _POST, _GET)
// Includeți și variantele pe care doriți să le ignorați din motive de securitate - de ex. PHPSESSID.
$ignorelist =array("HTTP_POST_VARS" , "HTTP_GET_VARS" ,
„HTTP_COOKIE_VARS” , „HTTP_SERVER_VARS” ,
„HTTP_ENV_VARS” , „HTTP_SESSION_VARS” ,
„_ENV” , „PHPSESSID” , „SESS_DBUSER” ,
„SESS_DBPASS” , „HTTP_COOKIE” );

$timestamp = data ("l/d/a h:m:s" );
$message = "Raport de depanare creat $timestamp \n" ;

// Obține ultima eroare SQL pentru o măsură bună, unde $link este identificatorul resursei
// pentru mysql_connect. Comentați sau modificați pentru baza de date sau configurarea abstracției.
global $link ;
$sql_error = mysql_error($link);
if($sql_error )(
$message .= „\nMesaje Mysql:\n” . mysql_error($link);
}
//Opriți MySQL

// Ar putea folosi o funcție recursivă aici. Ai inteles ideea ;-)
foreach($defined_vars ca $key => $val )(
if(este_array ($val ) && ! în_array ($key , $ignorelist ) && count ($val ) > 0 )(
$mesaj .= "\n $matrice de chei (cheie=valoare):\n" ;
foreach($val ca $subcheie => $subval )(
if(! in_array ($subcheie , $ignorelist ) && ! is_array ($subval ))(
$mesaj .= $subcheie . " = " . $subval. „\n” ;
}
elseif(! in_array ($subcheie , $ignorelist ) && is_array ($subval ))(
foreach($subval ca $subsubcheie => $subsubval )(
if(! in_array ($subsubcheie, $ignorelist))(
$mesaj .= $subsubcheie . " = " . $subsubval . "\n" ;
}
}
}
}
}
elseif(!
is_array ($val ) && ! in_array ($key , $ignorelist ) && $val )(
$message .= "\nVariabilă " . $key . " = " . $val. „\n” ;
}
}

Dacă($metoda == „browser” )(
echo nl2br($mesaj);
}
elseif($method == „e-mail” )(
if($email == „nedefinit” )(
$email = $_SERVER [ "SERVER_ADMIN" ];
}

$mresult = mail ($email , "Raport de depanare pentru " . $_ENV [ "HOSTNAME" ]. "" , $message );
if($mrezultat == 1 )(
ecou „Raportul de depanare a fost trimis cu succes.\n”;
}
altfel(
ecou „Trimiterea raportului de depanare a eșuat.\n”;
}
}
}
?>

acum 17 ani

Rutină simplă pentru a converti un obiect get_defined_vars în XML.

funcția obj2xml ($v, $indent = "" ) (
în timp ce (listă($cheie , $val ) = fiecare ($v )) (
dacă ($key == "__attr" ) continuă;
// Verificați __attr
if (este_obiect ($val -> __attr )) (
în timp ce (listă($key2 , $val2 ) = fiecare ($val -> __attr )) (
$attr .= " $key2 =\" $val2 \"" ;
}
}
else $attr = "" ;
if (este_matrice ($val ) || este_obiect ($val )) (
print(" $indent< $key$attr >\n" );
obj2xml($val, $indent. "");
print(" $indent\n" );
}
else print(" $indent< $key$attr >$val\n" );
}
}

//Exemplu de obiect
$x -> nume -> primul = "Ioan" ;
$x -> nume -> ultimul = "Smith" ;
$x -> arr [ "Fruit" ] = "Bannana" ;
$x -> arr [ "Veg" ] = "Morcov" ;
$y -> client = $x ;
$y -> client -> __attr -> id = "176C4" ;

$z = get_defined_vars();
obj2xml($z["y"]);
?>
va scoate:


Ioan
Smith


Banană
Morcov

acum 11 ani

Ca o notă, get_defined_vars() nu returnează un set de referințe variabile (cum am sperat). De exemplu:

// definește o variabilă
$my_var = "foo" ;

// obținem lista noastră de variabile definite
$defined_vars = get_defined_vars();

// acum încearcă să schimbi valoarea prin tabloul returnat
$defined_vars [ "my_var" ] = "bar" ;

echo $my_var , "\n" ;

?>

va scoate „foo” (valoarea originală). Ar fi bine dacă get_defined_vars() ar avea un argument opțional pentru a le face referințe, dar îmi imaginez că este o solicitare destul de specializată. O puteți face singur (mai puțin convenabil) cu ceva de genul:

$defined_vars = array();
$var_names = array_keys(get_defined_vars());

foreach ($var_names ca $var_name)
{
$defined_vars [ $var_name ] =& $ $var_name ;
}

?>

acum 1 an

Am mai postat aici despre „acest lucru” în get_defined_vars.

Se pare că nu este întotdeauna acolo, dar în anumite cazuri va apărea în mod inexplicabil.

PHP -r "
test de clasa(
funcția publică a() (var_dump(array_keys(get_defined_vars()));$a = 123;)
funcția publică b() (var_dump(array_keys(get_defined_vars()));$this;)
}
$t = test nou();
$t->a();
$t->b();
"

matrice()
matrice ("aceasta")

Acest lucru nu se întâmplă în PHP 7.2, dar se va întâmpla în PHP 5.6.

acum 1 an

Unele comentarii de aici subliniază că această funcție nu va returna referințe. Totuși, returnează nume și numele sunt „referințe”.

Nu aș recomanda sugestiile de aici care îl convertesc în referințe.

Funcția publică x($a, $b, $c) (
foreach(array_keys(get_defined_vars()) ca $key)
if($key !== „aceasta”)
$acest->y($($cheie));
}

Funcția publică y(&$input) (
$input++;
}

În loc de $() puteți folosi și $$.

Am făcut niște lucruri ciudate în timpul meu pentru a crea un cod extrem de generic, dar nu am fost niciodată nevoit să fac ceva ca cel de mai sus. S-ar putea să nu funcționeze (dar ar trebui, deoarece nu este diferit de $a[$key]).

Ai putea, de asemenea, să faci $$key++, dar nu am văzut niciodată un cod ca acesta care să nu fie îngrozitor de rău (folosirea dinamicii acolo unde dinamica nu este benefică).

Dacă faci așa ceva, acordă-i un control suplimentar.

acum 13 ani

Un pic la care trebuie să fii atent:

Dacă dezactivați RegisterGlobals și înrudite, apoi utilizați get_defined_vars(), este posibil să vedeți ceva de genul următor:

Matrice
[ GLOBALS ] => Matrice
[ GLOBALS ] => Matrice
*RECURSIUNE*
[ _POST ] => Array()
[ _GET ] => Array()
[ _COOKIE ] => Array()
[ _FILES ] => Array()
)

[ _POST ] => Array()
[ _GET ] => Array()
[ _COOKIE ] => Array()
[ _FILES ] => Array()

)
?>

Observați că $_SERVER nu este acolo. Se pare că php încarcă $_SERVER-ul superglobal dacă este folosit undeva.

printeaza "

". htmlspecialchars(print_r(get_defined_vars(), true))."
" ;
printeaza "
" . htmlspecialchars (print_r ($_SERVER , true )) ."
" ;
?>

Și apoi $_SERVER va apărea în ambele liste. Bănuiesc că nu este chiar o problemă, pentru că nimic rău nu se va întâmpla în orice caz, dar este o curiozitate interesantă, totuși.

acum 6 ani

Deoarece get_defined_vars() primește variabilele doar în punctul în care apelați funcția, există o modalitate simplă de a obține variabilele definite în domeniul curent.

// În partea de sus a scriptului dvs. php
$vars = get_defined_vars();

// Acum fă-ți treaba
$foo = "foo" ;
$bar = "bar" ;

// Obține toate variabilele definite în domeniul curent
$vars = array_diff(get_defined_vars(), $vars);

ecou"

"
;
print_r($vars);
ecou"
" ;
?>

acum 15 ani

Iată o funcție care generează un raport de depanare pentru afișare sau e-mail
folosind get_defined_vars. Excelent pentru a obține un instantaneu detaliat fără
bazându-se pe intrarea utilizatorului.

funcția generateDebugReport ($method, $defined_vars, $email = "undefined" )(
// Funcție pentru a crea un raport de depanare pentru afișare sau e-mail.
// Utilizare: generateDebugReport(method,get_defined_vars(),email);
// Unde metoda este „browser” sau „e-mail”.

// Creați o listă de ignorare pentru cheile returnate de „get_defined_vars”.
// De exemplu, HTTP_POST_VARS, HTTP_GET_VARS și altele sunt
// redundant (la fel ca _POST, _GET)
// Includeți și variantele pe care doriți să le ignorați din motive de securitate - de ex. PHPSESSID.
$ignorelist =array("HTTP_POST_VARS" , "HTTP_GET_VARS" ,
„HTTP_COOKIE_VARS” , „HTTP_SERVER_VARS” ,
„HTTP_ENV_VARS” , „HTTP_SESSION_VARS” ,
„_ENV” , „PHPSESSID” , „SESS_DBUSER” ,
„SESS_DBPASS” , „HTTP_COOKIE” );

$timestamp = data ("l/d/a h:m:s" );
$message = "Raport de depanare creat $timestamp \n" ;

// Obține ultima eroare SQL pentru o măsură bună, unde $link este identificatorul resursei
// pentru mysql_connect. Comentați sau modificați pentru baza de date sau configurarea abstracției.
global $link ;
$sql_error = mysql_error($link);
if($sql_error )(
$message .= „\nMesaje Mysql:\n” . mysql_error($link);
}
//Opriți MySQL

// Ar putea folosi o funcție recursivă aici. Ai inteles ideea ;-)
foreach($defined_vars ca $key => $val )(
if(este_array ($val ) && ! în_array ($key , $ignorelist ) && count ($val ) > 0 )(
$mesaj .= "\n $matrice de chei (cheie=valoare):\n" ;
foreach($val ca $subcheie => $subval )(
if(! in_array ($subcheie , $ignorelist ) && ! is_array ($subval ))(
$mesaj .= $subcheie . " = " . $subval. „\n” ;
}
elseif(! in_array ($subcheie , $ignorelist ) && is_array ($subval ))(
foreach($subval ca $subsubcheie => $subsubval )(
if(! in_array ($subsubcheie, $ignorelist))(
$mesaj .= $subsubcheie . " = " . $subsubval . "\n" ;
}
}
}
}
}
elseif(!
is_array ($val ) && ! in_array ($key , $ignorelist ) && $val )(
$message .= "\nVariabilă " . $key . " = " . $val. „\n” ;
}
}

Dacă($metoda == „browser” )(
echo nl2br($mesaj);
}
elseif($method == „e-mail” )(
if($email == „nedefinit” )(
$email = $_SERVER [ "SERVER_ADMIN" ];
}

$mresult = mail ($email , "Raport de depanare pentru " . $_ENV [ "HOSTNAME" ]. "" , $message );
if($mrezultat == 1 )(
ecou „Raportul de depanare a fost trimis cu succes.\n”;
}
altfel(
ecou „Trimiterea raportului de depanare a eșuat.\n”;
}
}
}
?>

acum 17 ani

Rutină simplă pentru a converti un obiect get_defined_vars în XML.

funcția obj2xml ($v, $indent = "" ) (
în timp ce (listă($cheie , $val ) = fiecare ($v )) (
dacă ($key == "__attr" ) continuă;
// Verificați __attr
if (este_obiect ($val -> __attr )) (
în timp ce (listă($key2 , $val2 ) = fiecare ($val -> __attr )) (
$attr .= " $key2 =\" $val2 \"" ;
}
}
else $attr = "" ;
if (este_matrice ($val ) || este_obiect ($val )) (
print(" $indent< $key$attr >\n" );
obj2xml($val, $indent. "");
print(" $indent\n" );
}
else print(" $indent< $key$attr >$val\n" );
}
}

//Exemplu de obiect
$x -> nume -> primul = "Ioan" ;
$x -> nume -> ultimul = "Smith" ;
$x -> arr [ "Fruit" ] = "Bannana" ;
$x -> arr [ "Veg" ] = "Morcov" ;
$y -> client = $x ;
$y -> client -> __attr -> id = "176C4" ;

$z = get_defined_vars();
obj2xml($z["y"]);
?>
va scoate:


Ioan
Smith


Banană
Morcov

acum 11 ani

Ca o notă, get_defined_vars() nu returnează un set de referințe variabile (cum am sperat). De exemplu:

// definește o variabilă
$my_var = "foo" ;

// obținem lista noastră de variabile definite
$defined_vars = get_defined_vars();

// acum încearcă să schimbi valoarea prin tabloul returnat
$defined_vars [ "my_var" ] = "bar" ;

echo $my_var , "\n" ;

?>

va scoate „foo” (valoarea originală). Ar fi bine dacă get_defined_vars() ar avea un argument opțional pentru a le face referințe, dar îmi imaginez că este o solicitare destul de specializată. O puteți face singur (mai puțin convenabil) cu ceva de genul:

$defined_vars = array();
$var_names = array_keys(get_defined_vars());

foreach ($var_names ca $var_name)
{
$defined_vars [ $var_name ] =& $ $var_name ;
}

?>

acum 1 an

Am mai postat aici despre „acest lucru” în get_defined_vars.

Se pare că nu este întotdeauna acolo, dar în anumite cazuri va apărea în mod inexplicabil.

PHP -r "
test de clasa(
funcția publică a() (var_dump(array_keys(get_defined_vars()));$a = 123;)
funcția publică b() (var_dump(array_keys(get_defined_vars()));$this;)
}
$t = test nou();
$t->a();
$t->b();
"

matrice()
matrice ("aceasta")

Acest lucru nu se întâmplă în PHP 7.2, dar se va întâmpla în PHP 5.6.

acum 1 an

Unele comentarii de aici subliniază că această funcție nu va returna referințe. Totuși, returnează nume și numele sunt „referințe”.

Nu aș recomanda sugestiile de aici care îl convertesc în referințe.

Funcția publică x($a, $b, $c) (
foreach(array_keys(get_defined_vars()) ca $key)
if($key !== „aceasta”)
$acest->y($($cheie));
}

Funcția publică y(&$input) (
$input++;
}

În loc de $() puteți folosi și $$.

Am făcut niște lucruri ciudate în timpul meu pentru a crea un cod extrem de generic, dar nu am fost niciodată nevoit să fac ceva ca cel de mai sus. S-ar putea să nu funcționeze (dar ar trebui, deoarece nu este diferit de $a[$key]).

Ai putea, de asemenea, să faci $$key++, dar nu am văzut niciodată un cod ca acesta care să nu fie îngrozitor de rău (folosirea dinamicii acolo unde dinamica nu este benefică).

Dacă faci așa ceva, acordă-i un control suplimentar.

Variabile în php- acesta este un fel de container de informații care poate conține diverse tipuri de date (text, numere, matrice și așa mai departe). În general, variabilele vă permit să creați, să stocați, să modificați și, ulterior, să accesați rapid informațiile specificate în ele.

Cum se creează o variabilă în PHP

Inițial, variabilele conțin semnul $ (dolar) - desemnarea folosirii unei variabile, apoi a literelor alfabet latin(de la a la z și mic și mare), la sfârșit pot conține numere. De asemenea, este posibil să folosiți un caracter de subliniere în titlu (nu la sfârșit).

Cum puteți numi variabilele:

$var
$variabil
$an1945
$_variable
Cum să nu numești variabile:

$1 - constă numai din numere
$1var - nu puteți începe un nume de variabilă cu un număr
$/var - dintre caracterele suplimentare, este permisă doar caracterul de subliniere _
$variable - Chirilic este permis de documentația PHP, dar nu este recomandat
$var iable - spațiile nu pot fi folosite

Fiecărei variabile i se atribuie o valoare. Semnul este folosit pentru a atribui o valoare = (egal). În timpul procesării scriptului, valoarea unei variabile se poate schimba în mod repetat, în funcție de diferite condiții.

$oraș = „Moscova”; // variabilei $city i s-a atribuit valoarea șirului (în ghilimele) Moscova
$an = 1147; // iar variabilei $an i s-a atribuit valoarea numerică 1147
?>

$nume = "Alexander";
$Name = "Alexey";
echo "$nume, $nume"; // va tipări „Alexander, Alexey”
?>

Imprimarea variabilelor PHP

Separat, ar trebui să vedeți cum să afișați variabilele folosind declarații de ieșire, a cărui activitate am examinat-o în ultima lecție Crearea unei pagini PHP. Operatori de inferență. . Mai jos voi da o serie de exemple ilustrative cu comentarii.

// Așa setăm valorile variabilelor
$name1 = "Alexey";
$name2 = "Alexander";

// Variabile de ieșire
echo $nume2; // Ieșire: Alexandru
echo "nume1 este $nume1"; // numele 1 este Alexey

// Când folosiți ghilimele simple, ieșire
// nume variabilă, nu valoare
echo "nume1 este $nume1"; // va scoate: nume1 este $nume1

// puteți afișa pur și simplu valorile variabilelor
echo $nume1; // Alexey
echo $nume1,$nume2; // AlexeyAlexander
echo $nume1." ".$nume2; // Alexey Alexander
echo „$nume1, $nume2”; // Alexey, Alexandru

Ecou<<Aceasta folosește sintaxa „aici document” pentru ieșire
mai multe linii cu $substituţie variabilă variabilă.
SFÂRŞIT;

Operații cu variabile PHP

Operații aritmetice în PHP
În cazul valorilor numerice, puteți efectua operații aritmetice: adunare, scădere, înmulțire etc.

-$a(negație) Schimbați semnul lui $a.
$a + $b(adăugare) Suma $a și $b.
$a - $b(scădere) Diferența dintre $a și $b.
$a * $b(înmulțire) Produsul lui $a și $b.
$a / $b(diviziunea) Coeficientul $a impartit la $b.
$a % $b(diviziunea în modul) Restul întreg când $a este împărțit la $b.
Să ne uităm la exemple

$a = 2; // rețineți că în cazul numerelor nu se folosesc ghilimele
$b = 3; // rețineți că în cazul numerelor nu se folosesc ghilimele

$rezultat = $a + $b; // adaugă variabile
echo $rezultat; // va tipări 5

$rezultat = $b - $a; // adaugă variabile
echo $rezultat; // va imprima 1

Operațiuni de creștere și scădere în PHP
Aceste operații vor fi utile în principal la construirea ciclurilor, despre care vom vorbi puțin mai târziu.
Prefix- operatori scrii ÎNAINTE de variabilă ( --$a; +$a). Returnează valoarea variabilei înainte de modificări.
Postfix- operatori scrisi dupa variabila ( $a--; $a--). Returnează valoarea unei variabile cu modificări.
Creştere- cresterea valorii.
Decrementează- valoare în scădere.

+$a Creștere de prefix. Crește $a cu unul și returnează valoarea lui $a.
$a++ Creștere postfix. Returnează valoarea lui $a și apoi incrementează $a cu unu.
--$a Decrementarea prefixului. Decrementează $a cu unu și returnează valoarea lui $a.
$a-- Scădere postfix. Returnează valoarea lui $a și apoi decrește $a cu unu.
ecou"

Creștere postfix

";
$a = 5;
ecou "Trebuie să fie 5: " . $a++ . „\n”;

Ecou"

Creșterea prefixului

";
$a = 5;
ecou "Trebuie să fie 6: " . +$a. „\n”;
ecou "Trebuie să fie 6: " . $a . „\n”;

Ecou"

Scădere postfix

";
$a = 5;
ecou "Trebuie să fie 5: " . $a-- . „\n”;

Ecou"

Decrementarea prefixului

";
$a = 5;
ecou "Trebuie să fie 4: " . --$a . „\n”;
ecou "Trebuie să fie 4: " . $a . „\n”;
?>

Operațiuni de atribuire în PHP
Operator de bază arata ca = . La prima vedere poate părea că acesta este operatorul egal. De fapt, acest lucru nu este adevărat. De fapt, operatorul de atribuire înseamnă că operandul din stânga ia valoarea expresiei din dreapta (adică este stabilit de valoarea rezultată). Operatori combinați- aceștia sunt operatori care vă permit să utilizați valorile anterioare ale variabilelor pentru operațiuni ulterioare (adăugați la o variabilă șir (cu text) sau adăugați valori numerice).

$a = ($b = 2) + 4; // rezultat: $a este setat la 6, variabilei $b i se atribuie 2.

$a = 2;
$a += 3; // setează $a la 5, similar cu scrierea: $a = $a + 3;
$b = "Bună ziua";
$b .= „Pace!”; // setează $b la șirul „Hello World!”, cum ar fi $b = $b . "Acolo!";

Există de asemenea operatii de comparatieŞi logic, dar despre ele vom vorbi în următoarele lecții. Voi încerca să nu vă sperii cu o cantitate mare de informații imediat!)

Acest tutorial acoperă domeniul de aplicare al variabilelor PHP. Explică diferența dintre domeniul local și global, arată cum să accesezi variabile globale într-o funcție, cum să lucrezi cu superglobale și cum să creezi variabile statice.

Când începi învăţarea PHPși începeți să lucrați cu funcții și obiecte, domeniul de aplicare al variabilelor provoacă o oarecare confuzie. Din fericire, regulile PHP în acest sens sunt foarte ușor de înțeles (comparativ cu alte limbaje de programare).

Ce este domeniul de aplicare?

Sfera variabilelor este contextul în care a fost definită variabila și unde poate fi accesată. PHP are două domenii variabile:

  • Global- variabilele pot fi accesate oriunde în script
  • Local- variabilele pot fi accesate numai în interiorul funcției în care au fost definite

Sfera de aplicare a unei variabile, și în special cea locală, simplifică foarte mult gestionarea codului. Dacă toate variabilele ar fi globale, atunci ele ar putea fi modificate oriunde în script. Acest lucru ar duce la haos și la scripturi mari, deoarece foarte adesea părți diferite ale scriptului folosesc variabile cu aceleași nume. Limitând domeniul de aplicare la contextul local, definiți limitele codului care poate accesa o variabilă, ceea ce face codul mai robust, modular și mai ușor de depanat.

Variabile cu zonă globală vizibilitatea se numește globală, iar cu anvergură locală - locală.

Iată un exemplu despre cum funcționează variabilele globale și locale.

"; ) sayHello(); echo "Valoarea \$globalName: "$globalName"
„; echo „Valoare\$localName: „$localName”
"; ?>

Salut Harry! Valoarea $globalName: „Zoe” Valoarea $localName: „”

În acest script am creat două variabile:

  • $globalName- Asta globală variabilă
  • $localName- Asta local o variabilă care este creată în interiorul funcției sayHello().

După crearea variabilei și a funcției, scriptul apelează sayHello(), care afișează „Hello Harry!” . Scriptul încearcă apoi să scoată valorile celor două variabile folosind funcția echo. Iată ce se întâmplă:

  • Deoarece $globalName a fost creat în afara funcției, este disponibil oriunde în script, deci „Zoe” este afișat.
  • $localName va fi disponibil numai în cadrul funcției sayHello(). Deoarece expresia ecou este în afara funcției, PHP nu oferă acces la variabila locală. În schimb, PHP se așteaptă ca codul să creeze o nouă variabilă numită $localName , care va avea o valoare implicită a șirului gol. de aceea, al doilea apel la echo scoate valoarea „” pentru variabila $localName.

Accesarea variabilelor globale în interiorul unei funcții

Pentru a accesa o variabilă globală in afara functiei Este suficient să-i scrii numele. Dar pentru a accesa o variabilă globală în interiorul unei funcții, trebuie mai întâi să declarați variabila ca globală în funcție folosind cuvântul cheie global:

Funcția myFunction() ( global $globalVariable; // Accesați variabila globală $globalVariable )

Dacă nu faceți acest lucru, PHP presupune că creați sau utilizați o variabilă locală.

Iată un exemplu de script care utilizează o variabilă globală în interiorul unei funcții:

"; global $globalName; echo "Bună ziua $globalName!
"; ) spune Bună (); ?>

Când este executat, scriptul va afișa:

Salut Harry! Salut Zoya!

Funcția sayHello() folosește cuvânt cheie global pentru a declara variabila $globalName ca fiind globală. Ea poate apoi accesa variabila și scoate valoarea acesteia („Zoe”).

Ce sunt superglobalii?

PHP are un set special de matrice globale predefinite care conțin diverse informații. Astfel de matrice sunt numite superglobali, deoarece sunt accesibile de oriunde în script, inclusiv spațiul de funcționare intern și nu trebuie să fie definite folosind cuvântul cheie global.

Iată o listă de superglobale disponibile în PHP versiunea 5.3:

  • $GLOBALS - listă cu toate variabilele globale din script (cu excepția superglobalelor)
  • $_GET - conține o listă a tuturor câmpurilor de formular trimise de browser folosind o solicitare GET
  • $_POST - conține o listă a tuturor câmpurilor de formular trimise de browser folosind o solicitare POST
  • $_COOKIE - conține o listă cu toate cookie-urile trimise de browser
  • $_REQUEST - conține toate combinațiile cheie/valoare care sunt conținute în tablourile $_GET, $_POST, $_COOKIE
  • $_FILES - conține o listă cu toate fișierele descărcate de browser
  • $_SESSION - vă permite să stocați și să utilizați variabile de sesiune pentru browserul curent
  • $_SERVER - conține informații despre server, cum ar fi numele fișierului scriptului care se execută și adresa IP a browserului.
  • $_ENV - conține o listă de variabile de mediu transmise PHP, cum ar fi variabilele CGI.
De exemplu, puteți folosi $_GET pentru a obține valorile variabilelor incluse în șirul URL de solicitare a unui script și pentru a le afișa pe pagină:

Dacă rulați scriptul de mai sus folosind adresa URL http://www.example.com/script.php?yourName=Fred, va afișa:

Salut Fred!

Avertizare!Într-un script real, un astfel de transfer de date nu ar trebui să fie utilizat niciodată din cauza securității slabe. Ar trebui să validați sau să filtrați întotdeauna datele.

Superglobal $GLOBALS este foarte convenabil de utilizat deoarece vă permite să organizați accesul la variabile globale într-o funcție fără a fi nevoie de cuvântul cheie global. De exemplu:

"; ) sayHello(); // Afișează „Bună ziua, Zoya!” ?>

Variabile statice: sunt pe undeva

Când creați o variabilă locală în interiorul unei funcții, aceasta există doar în timp ce funcția rulează. Când funcția se termină, variabila locală dispare. Când funcția este apelată din nou, este creată o nouă variabilă locală.

În majoritatea cazurilor, acest lucru funcționează excelent. Astfel, funcțiile sunt autonome și funcționează întotdeauna la fel de fiecare dată când sunt apelate.

Cu toate acestea, există situații în care ar fi convenabil să se creeze o variabilă locală care „își amintește” valoarea între apelurile de funcții. O astfel de variabilă se numește static.

Pentru a crea o variabilă statică într-o funcție, trebuie să utilizați cuvântul cheie static înainte de numele variabilei și asigurați-vă că îl setați valoarea initiala. De exemplu:

Funcția myFunction() ( static $myVariable = 0; )

Să luăm în considerare o situație în care este convenabil să folosiți o variabilă statică. Să presupunem că creați o funcție care, atunci când este apelată, creează un widget și afișează numărul de widget-uri deja create. Puteți încerca să scrieți cod ca acesta folosind o variabilă locală:


"; echo createWidget() ." am creat deja.
"; echo createWidget() ." am creat deja.>
"; ?>

Dar, deoarece variabila $numWidgets este creată de fiecare dată când funcția este apelată, vom obține următorul rezultat:

Creăm câteva widget-uri... Am creat deja 1. Am creat deja 1. Am creat deja 1.

Dar folosind o variabilă statică, putem stoca valoarea de la un apel de funcție la altul:

"; echo createWidget() ." am creat deja.
"; echo createWidget() ." am creat deja.
"; echo createWidget() ." >am creat deja.
"; ?>

Acum scriptul va produce rezultatul așteptat:

Creăm câteva widget-uri... Am creat deja 1. Am creat deja 2. Am creat deja 3.

Deși o variabilă statică își păstrează valoarea între apelurile de funcție, este validă numai în timp ce scriptul rulează. Odată ce scriptul finalizează execuția, toate variabilele statice sunt distruse, la fel ca și variabilele locale și globale.

Asta este! Vă rugăm să consultați documentația PHP frecvent.

Cu siguranță ai acasă un dulap sau o comodă. Principiul utilizării lor este simplu: punem acolo lucruri de care nu avem nevoie acum, dar ar putea avea nevoie într-un timp.

Variabilele sunt aranjate exact la fel. Puteți pune ceva valoare în ele și le puteți păstra acolo până când aveți nevoie de ele.

Crearea variabilelor

Puteți pune o valoare într-o variabilă ca aceasta:

În codul de mai sus, am creat o variabilă $name și am pus valoarea Ivan în ea, apoi am creat o variabilă $age și i-am atribuit valoarea 20.

Numele „variabilă” înseamnă că valoarea sa se poate schimba în timpul execuției scriptului:

În unele limbi, o variabilă trebuie mai întâi „declarată” și apoi utilizată. Nu există nicio declarație în PHP - o variabilă este creată în momentul în care îi puneți o valoare.
Cu toate acestea, programatorii PHP spun adesea „declară o variabilă” în loc de „creează o variabilă”.

De asemenea, în loc de „pune valoare variabilă„ se spune adesea că „atribuie o valoare”.
Motivul este simplu - simbolul =, datorită căruia stocăm o valoare într-o variabilă, se numește „operator de atribuire”. De aici și termenul „potrivit”.

Reguli de denumire a variabilelor

1. Numele variabilei începe cu simbolul $.

2. Al doilea caracter poate fi o literă sau un caracter de subliniere _

Numele variabilelor țin cont de majuscule. $name și $Name sunt variabile diferite.

Afișarea valorii unei variabile pe ecran

Puteți afișa o variabilă folosind comanda echo pe care o știm deja:

Comanda echo vă permite să afișați mai multe valori simultan:

Observați că am trecut 2 valori la echo, separate prin virgulă. Astfel putem trece câte valori ne dorim. Următoarele două exemple vor produce același rezultat:

Există, de asemenea, o sintaxă scurtă pentru afișarea variabilelor în PHP. În loc de

Înainte de PHP 5.4, sintaxa de prescurtare funcționa numai când era inclusă în setări PHP directiva short_open_tag, care permite, de asemenea, utilizarea unei etichete de deschidere scurtate

Verificarea valorii unei variabile

Comanda echo nu este întotdeauna convenabilă pentru verificarea valorii curente a unei variabile. De exemplu, dacă încercați să afișați șirul gol „”, absolut nimic nu va fi afișat pe ecran. Și nu este clar care este motivul - o variabilă goală sau un cod rupt.

Prin urmare, pentru a verifica valoarea unei variabile, se folosește funcția var_dump():

Rezultatul execuției scriptului:

String(5) „Vasya” șir(0) „”

După cum puteți vedea, PHP a afișat nu numai conținutul variabilei, ci și numărul de caractere și chiar tipul variabilei (șir). Vom analiza în detaliu tipurile de date în lecțiile următoare.

Eliminarea variabilelor

Puteți elimina o variabilă existentă folosind funcția unset():

Acum este timpul să exersăm puțin.

Amintiți-vă, aproape orice problemă PHP poate avea mai multe soluții. Prin urmare, dacă soluțiile tale diferă de cele scrise pe acest site, asta nu înseamnă deloc că ai greșit cu ceva.

Scrieți un script care:
1. Creează variabile cu numele titlu și conținut și unele valori.
2. Afișează valoarea variabilei de titlu în interiorul etichetei h1 și valoarea variabilei de conținut în interiorul etichetei div.

Arată soluția

", $title, ""; ecou"

", $conținut, "
"; ?>

Aș dori să vă atrag încă o dată atenția asupra faptului că această decizie nu este singura corectă. De exemplu, următorul cod va produce același rezultat: