Primerjalni operatorji so pogosto spregledani aspekt PHP-ja, kar lahko pelje do mnogih nepričakovanih rezultatov.
En tak problem izhaja iz striktnih primerjav (primerjava logičnih izrazov kot cela števila).
Pri uporabi stavkov »if/else« znotraj funkcije ali metode razreda, je pogosto spregledano, da mora biti »else« uporabljen v vezavi, da se deklarira potencialne rezultate.
Vendar če rezultat definira vrednost, ki jo vrne, »else« ni potreben saj bo »return« končala funkcijo, kar naredi »else« spornega.
Ko se uporablja imenske prostore, lahko ugotovite, da so interne funkcije skrite za funkcijami, ki jih napišete.
Da se to popravi, se sklicujte na globalne funkcije z uporabo leve poševnice pred imenom funkcije.
Nizi so serija znakov, ki bi morali biti precej enostavni.
Tako povedano je na voljo več različnih tipov nizov in ponujajo malenkost drugačno sintakso z malenkost različnimi obnašanji.
Enojni citati
Enojni citati so uporabljeni za označevanje »dobesednih nizov«.
Dobesedni nizi ne poskušajo prevajati posebnih znakov ali spremenljivk.
Če uporabljate enojne citate, bi lahko vnesli ime spremenljivke v niz kot je: 'stome $thing' in videli bi točen izpis some $thing.
Če uporabljate dvojne citate, ki bi poskušali oceniti ime spremenljivke $thing in pokazati napake, če ni najdena nobena spremenljivka.
Dvojni citati so švicarski vojaški nož nizov.
Ne bodo sami prevedli spremenljivk, kot je omenjeno zgoraj, vendar vse vrste posebnih znakov, kot je \n za novo vrstico, \t za tabulator itd.
Dvojni citati lahko vsebujjejo spremnljivke, to se imenuje »interpolacija«.
Ko se uporablja interpolacijo, je pogosti primer, da se bo spremenljivka dotikala drugega znaka.
Tu bo prišlo do nekaj zmede, kaj je ime spremenljivke in kaj je dobesedni znak.
Da se to odpravi, se ovije spremenljivko znotraj zavitih oklepajev.
Sintaksa nowdoc je bila predstavljena v 5.3 in se interno obnaša na podoben način kot enojni citati, razen ko je primernejše uporabiti več vrstične nize brez potrebe po spojevanju.
Potrebno je opozoriti, da so več vrstični nizi lahko tvorjeni tudi z nadaljevanjem preko večih vrstic v stavku.
npr.
Kaj je hitreje?
Naokoli obstoja mit, da so enojni citati frakcijsko hitrejši kot dvojni nizi.
To v osnovi ni res.
Če definirate enojni niz in ne poskušate združevati vrednosti ali česarkoli kompliciranega, potem bodo ali enojni ali dvojni nizi v celoti identični.
In noben ni hitrejši.
Če združujete več nizov kateregakoli tipa ali interpolirate vrednosti v dvojno citirane nize, potem so lahko rezultati različni.
Če delate z majhnim številom vrednosti, potem je združevanje do potankosti hitrejše.
Z veliko vrednosti je interpolacija do potankosti hitrejša.
Ne glede na to, kaj delate z nizi, noben tip ne bo nikoli imel opaznejšega vpliva na vašo aplikacijo.
Če poskušate prepisati kodo, da uporablja enega ali drugega, je vedno vaja v jalovosti, torej se izogibajte tem mikro-optimizacijam, razen če res razumete pomen in vpliv teh razlik.
Trojni operatorji so odlična pot za zgoščeno kodo, vendar so pogosto uporabljeni s presežkom.
Medtem ko so lahko trojni operatorji zloženi/gnezdeni, je priporočljivo uporabiti enega na vrstico zaradi bralnosti.
V primerjavi je tu primer, ki žrtvuje vse oblike bralnosti za zmanjšanje števila vrstic.
To ‘return’ a value with ternary operators use the correct syntax.
Pozoren je treba biti, da ne potrebujete uporabljati trojnih operatorjev za vračanje logičnih vrednosti.
Primer tega bi bil:
To lahko rečemo tudi za vse operacije (===, !==, !=, == itd.).
Uporaba oklepajev s trojnimi operatorji za oblikovanje in funkcijo
Ko se uporablja trojni operator, lahko oklepaji igrajo svojo vlogo za izboljšanje bralnosti kode in tudi vključitev zvez znotraj blokov izrazov.
Primer, ko ni nobene zahteve po uporabi oklepajev, je:
Oklepaji nam tudi omogočajo zmožnost izdelave zvez znotraj blokov stavkov, kjer bo blok preverjen kot celota.
Kot ta primer spodaj, ki bo vrnil true če sta oba ($a == 3 in $b == 4) true in $c == 5 je tudi true.
Drug primer je skupek kode spodaj, ki bo vrnil true, če velja ($a != 3 AND $b != 4) OR $c == 5.
Od PHP 5.3 je možno izpustiti srednji del trojnega operatorja.
Izraz »expr1 ?: expr3« vrne expr1, če je enako TRUE drugače pa expr3.