PHP acceptă multe dintre comparațiile matematice comune limbajelor de programare, cum ar fi echivalența și compararea valorii relative. Totuși, simbolurile utilizate pot fi diferite de cele cu care sunteți obișnuit. În graficul de mai jos vom analiza cum să reprezentăm fiecare test de comparație și în ce condiții ne putem aștepta ca testul să revină ca adevărat.
Tabelul 11 Operatori de comparație
Exemplu | Nume | Rezultat |
$a == $b | Egal | TRUE dacă $a este egal cu $b. |
$a === $b | Identic | TRUE dacă $a este egal cu $b, și sunt de același tip. (introdusă în PHP 4) |
$a != $b | Inegal | TRUE dacă $a nu este egal cu $b. |
$a < > $b | Inegal | TRUE dacă $a nu este egal cu $b. |
$a !== $b | Neidentic | TRUE dacă $a nu este egal cu $b, sau nu sunt de același tip. (introdusă în PHP 4) |
$a < $b | Mai mic decât | TRUE dacă $a este strict mai mic decât $b. |
$a > $b | Mai mare decât | TRUE dacă $a este strict mai mare decât $b. |
$a <= $b | Mai mic sau egal cu | TRUE dacă $a este mai mic sau egal cu $b. |
$a >= $b | Mai mare sau egal cu | TRUE dacă $a este mai mare sau egal cu $b. |
Aceste teste vor fi utile pe măsură ce trecem prin structuri logice. Rezultatele acestor comparații ne pot ajuta să stabilim un curs de acțiune, cum ar fi ceea ce este afișat utilizatorului, modul în care modificăm sau creăm date sau răspundem la intrarea utilizatorului. Acordați o atenție deosebită diferenței dintre testele egale (==) și identice (===). Egal înseamnă că comparația fiecărei părți este considerată aceeași. De exemplu, 1 și True sunt considerate egale, deoarece PHP va trata un 1 ca un număr întreg și o reprezentare binară a adevăratului. Dacă vrem să ne asigurăm că elementele sunt aceleași atât ca valoare, cât și ca tip, am folosi strict egal. Acest test returnează un fals în exemplul nostru, deoarece 1 și True nu sunt ambele numere întregi ale valorii 1. De asemenea, nu uitați cel puțin al doilea =, deoarece doar unul va fi tratat ca atribuire, nu un test logic!
Ordinea operațiunilor
PHP urmează ordinea tradițională a operațiilor utilizate în matematică, așa cum se găsește mai jos. O asociativitate de „stânga” înseamnă că analizatorul va citi de la stânga la dreapta în ecuație. „Dreapta” înseamnă că se va deplasa de la dreapta la stânga (adică: atribuiți ecuația elementului din stânga semnului =). Precedența are loc de sus în jos, ceea ce înseamnă că operatorii mai sus în această listă vor fi evaluați înaintea celor de sub ei. La fel ca în matematică, paranteza va întrerupe această listă tratând conținutul fiecărui set de paranteze (din cele mai interioare) ca pe o declarație în sine. Porțiunea din tabel în galben evidențiază operatorii cei mai folosiți pentru dezvoltare sub nivelul aplicației.
NOTE SUPLIMENTARE: Țineți cont! În timp ce utilizați cuvintele „and” și „or” în instrucțiunile dvs. logice, PHP nu vă va da o eroare, deoarece acestea sunt în ordinea de prioritate de mai jos. Rețineți că sunt sub semnul = – acest lucru vă va afecta ecuațiile logice. În marea majoritate a timpului, veți dori să utilizați „&&” și „||”, deoarece acestea vor fi evaluate înainte de atribuire.
Tabelul 12 Precedența operatorului
Asociativitate | Operatori |
non-asociativ | clonează nou |
stânga | [ |
non-asociativ | + + – |
dreapta | ~—(int) (float) (string) (array) (object) (bool) @ |
non-asociativ | instanța a |
dreapta | ! |
stânga | * / % |
stânga | +-. |
stânga | << >> |
non-asociativ | < <= > >= <> |
non-asociativ | == ! ==== ! == |
stânga | & |
stânga | ^ |
stânga | | |
stânga | && |
stânga | || |
left | ?: |
left | = += -= *= /= .= %= &= |= ^= <<= >>= => |
left | and |
left | xor |
left | or |
left | , |
Să ne uităm la câteva exemple pentru a demonstra precedența în PHP:
echo 3 * 4 + 3 + 2; | 17 Înmulțirea are prioritate și toate sunt evaluate de la stânga la dreapta |
echo 3 * (4 + 3 + 2); | 27 Parantezele au prioritate, astfel încât adunarea este evaluată înainte de înmulțire |
Given: $this = true; $that=false
$result = $this && $that |
$result = false true and false is false |
$result = $this and $that | $result = true $this (true) is assigned before $this and $that is evaluated |
Sursa: Michael Mendez, The Missing Link – An Introduction to Web Development and Programming (CC BY-NC-SA 3.0 License), Published by Open SUNY Textbooks, Milne Library (IITG PI), State University of New York at Geneseo. Traducere de Nicolae Sfetcu
Lasă un răspuns