Spalis20
Atliekant veiksmus su loginiais operatoriais ir naudojant juos sąlygos sakiniuose, dažnai tikimasi tokios sąlygos schemos:
if ( <sąlyga> [ == <rezultatas> ] ) <atliekami veiksmai>;
Tačiau naudojant sąlygose loginius operatorius, ši schema negalioja, kadangi operatorių eiliškume palyginimo operatoriai yra aukštesnio prioriteto nei loginiai. Dėl to gauname ne visada tikėtą rezultatą. Pvz.:
$a = 5; $b = 2; echo ($a & $b == 0)?'nulis':'ne nulis'; // ne nulis echo (($a & $b) == 0)?'nulis':'ne nulis'; // nulis $a = 1; $b = 2; echo ($a & $b == 2)?'du':'ne du'; // du echo (($a & $b) == 2)?'du':'ne du'; // ne du
Operatorių eiliškumas iš PHP manual'o.
| Associativity | Operators | Additional Information |
|---|---|---|
| non-associative | clone new | clone and new |
| left | [ | array() |
| non-associative | ++ -- | increment/decrement |
| non-associative | ~ - (int) (float) (string) (array) (object) (bool) @ | types |
| non-associative | instanceof | types |
| right | ! | logical |
| left | * / % | arithmetic |
| left | + - . | arithmetic and string |
| left | << >> | bitwise |
| non-associative | < <= > >= <> | comparison |
| non-associative | == != === !== | comparison |
| left | & | bitwise and references |
| left | ^ | bitwise |
| left | | | bitwise |
| left | && | logical |
| left | || | logical |
| left | ? : | ternary |
| right | = += -= *= /= .= %= &= |= ^= <<= >>= | assignment |
| left | and | logical |
| left | xor | logical |
| left | or | logical |
| left | , | many uses |
Įrašų RSS