Cosa c'è di diverso tra isset($string)
e @$string
in PHP?
Questo funziona in entrambi i modi, quindi qual è la differenza?
if(isset($string))
....
if(@$string)
....
Cosa c'è di diverso tra isset($string)
e @$string
in PHP?
Questo funziona in entrambi i modi, quindi qual è la differenza?
if(isset($string))
....
if(@$string)
....
Funzione variabile isset()
e restituisce true se la variabile esiste. Registrati @
Ignora errore. Dare quasi gli stessi valori. codice successivo forse vederlo:
if(isset($string))
print 1; // no print
if(@$string)
print 2; // no print
$string = false;
if(isset($string))
print 3; // print 3
if(@$string)
print 4; // no print
FYI: I backtick tripli funzionano solo con il markdown di GitHub, non qui. –
Ok, proverò a ricordarlo :) – ventaquil
isset
è true
se la variabile data esiste e non è null
.
@$var
è true
se il valore di $var
è true
in confronto sciolto. *
!== null
e == true
abbinamento valori diversi.
Nel caso di @$var
, se $var
non esiste, verrà generato un errore internamente e generato e il suo output verrà soppresso tramite @
. Questa è un'operazione molto più costosa e può far scattare gestori di errori personalizzati in arrivo. Non usarlo mai se c'è un'alternativa.
* Il valore di una variabile inesistente è sostituito da null
, che è uguale false
.
Utilizzare isset($str)
non è lo stesso come @$str
.
isset($str)
è vero se $str
is set and is not null.
@$str
è vero se $str
è truthy.
consideri il seguente esempio:
$str = "0";
if (isset($str)) {
// This gets printed because $str is set
echo "Str is set" . PHP_EOL;
}
if (@$str) {
// This is NOT printed because $str is falsy
echo "Str is truthy" . PHP_EOL;
}
Va inoltre osservato che @
, oltre ad essere una cattiva abitudine, incorre significant performance penalty.
Il primo controlla che la variabile sia definita e non nullo. Il secondo è il controllo per un valore di verità, il segno '@' sopprime eventuali errori – billyonecan
così possiamo usare entrambi? isset (@ $ stringa)? – Abudayah
non è necessario – billyonecan