Rozważ tę instrukcję jQuery
isTouch = document.createTouch !== undefined
Chciałbym wiedzieć, czy mamy podobną instrukcję w PHP, która nie jest isset (), ale dosłownie sprawdza niezdefiniowaną wartość, coś takiego:
$isTouch != ""
Czy w PHP jest coś podobnego do powyższego?
Odpowiedzi:
Możesz użyć -
$isTouch = isset($variable);
Zwróci,
true
jeśli$variable
zdefiniowano. jeśli zmienna nie jest zdefiniowana, zwrócifalse
.Jeśli chcesz sprawdzić
false
,0
etc Następnie można użyćempty()
-$isTouch = empty($variable);
empty()
pracuje dla -źródło
isset()
zawsze zwraca bool.true
lubfalse
. Więc nie ma potrzeby tego odlewania.empty()
które zwróci wartość false, jeśli jest to pusty ciąg.isset()
zwróci prawdę, jeśli jest to pusty łańcuch, również pusty sprawdza wewnętrznie isset.$isTouch = (bool) $variable;
co zrobi to samo coisset()
i może jest trochę lepsze, ponieważ będzie działać tak samoempty()
.Innym sposobem jest po prostu:
if($test){ echo "Yes 1"; } if(!is_null($test)){ echo "Yes 2"; } $test = "hello"; if($test){ echo "Yes 3"; }
Wróci :
"Yes 3"
Najlepszym sposobem jest użycie isset (), w przeciwnym razie może pojawić się błąd typu „undefined $ test”.
Możesz to zrobić w ten sposób:
if( isset($test) && ($test!==null) )
Nie będziesz mieć żadnego błędu, ponieważ pierwszy warunek nie zostanie zaakceptowany.
źródło
$test!==null
bez nawiasów, to co się stanie? Czy spowoduje to błąd?Aby sprawdzić, czy zmienna jest ustawiona, musisz użyć funkcji isset.
$lorem = 'potato'; if(isset($lorem)){ echo 'isset true' . '<br />'; }else{ echo 'isset false' . '<br />'; } if(isset($ipsum)){ echo 'isset true' . '<br />'; }else{ echo 'isset false' . '<br />'; }
ten kod wydrukuje:
isset true isset false
czytaj więcej na https://php.net/manual/en/function.isset.php
źródło
Możesz użyć -
Operator trójskładnikowy, aby sprawdzić, czy wartość ustawiona przez POST / GET, czy nie ma czegoś takiego
$value1 = $_POST['value1'] = isset($_POST['value1']) ? $_POST['value1'] : ''; $value2 = $_POST['value2'] = isset($_POST['value2']) ? $_POST['value2'] : ''; $value3 = $_POST['value3'] = isset($_POST['value3']) ? $_POST['value3'] : ''; $value4 = $_POST['value4'] = isset($_POST['value4']) ? $_POST['value4'] : '';
źródło
JavaScript jest „ścisłe nie równa” operator (
!==
) na porównaniuundefined
ma nie powodowaćfalse
nanull
wartości.var createTouch = null; isTouch = createTouch !== undefined // true
Aby osiągnąć równoważne zachowanie w PHP, możesz sprawdzić, czy nazwa zmiennej istnieje w kluczach wyniku
get_defined_vars()
.// just to simplify output format const BR = '<br>' . PHP_EOL; // set a global variable to test independence in local scope $test = 1; // test in local scope (what is working in global scope as well) function test() { // is global variable found? echo '$test ' . ( array_key_exists('test', get_defined_vars()) ? 'exists.' : 'does not exist.' ) . BR; // $test does not exist. // is local variable found? $test = null; echo '$test ' . ( array_key_exists('test', get_defined_vars()) ? 'exists.' : 'does not exist.' ) . BR; // $test exists. // try same non-null variable value as globally defined as well $test = 1; echo '$test ' . ( array_key_exists('test', get_defined_vars()) ? 'exists.' : 'does not exist.' ) . BR; // $test exists. // repeat test after variable is unset unset($test); echo '$test ' . ( array_key_exists('test', get_defined_vars()) ? 'exists.' : 'does not exist.') . BR; // $test does not exist. } test();
W większości przypadków
isset($variable)
jest to właściwe. To jest równoważne zarray_key_exists('variable', get_defined_vars()) && null !== $variable
. Jeśli po prostu użyjesznull !== $variable
bez wstępnego sprawdzania istnienia, zepsujesz swoje dzienniki ostrzeżeniami, ponieważ jest to próba odczytania wartości niezdefiniowanej zmiennej.Możesz jednak zastosować niezdefiniowaną zmienną do odwołania bez żadnego ostrzeżenia:
// write our own isset() function function my_isset(&$var) { // here $var is defined // and initialized to null if the given argument was not defined return null === $var; } // passing an undefined variable by reference does not log any warning $is_set = my_isset($undefined_variable); // $is_set is false
źródło
if(isset($variable)){ $isTouch = $variable; }
LUB
if(!isset($variable)){ $isTouch = "";// }
źródło