Utilizzando ||
invece di &&
sarebbe invertire questo comportamento.
Lo stesso comportamento può ovviamente essere ottenuto anche aggiungendo un'ulteriore istruzione if
. In tal modo:
Mentre l'uso di operatori cortocircuito può ridurre il numero di linee, può anche rendere il codice più difficile da leggere.
In termini di velocità di esecuzione, non ci dovrebbero essere differenze evidenti.
Aggiornamento
devo ritirare la mia precedente dichiarazione circa che vi sia alcuna differenza in termini di velocità di esecuzione. Date le seguenti due script di test, vale a dire una versione con l'operatore di corto circuito:
<?php
$a = true;
function b() { global $a; $a = !$a; }
for ($i = 0; $i < 10000000; $i++) {
$a && b();
}
?>
e una versione con una if
dichiarazione:
<?php
$a = true;
function b() { global $a; $a = !$a; }
for ($i = 0; $i < 10000000; $i++) {
if($a) { b(); }
}
?>
Si scopre che la seconda versione (con il if
dichiarazione) è circa il 40% più veloce (~ 450 ms vs ~ 750 ms) sulla mia versione PHP 5.5.9 su Ubuntu 14.04 LTS (64 bit).
I risultati possono variare a seconda delle versioni e dei sistemi operativi PHP diversi, ma almeno sulla mia macchina sono costantemente presenti differenze significative nella velocità di esecuzione.
Grazie per la tua risposta. Funziona ............ –