PHP - проверьте, есть ли переменная undefined
Рассмотрим этот статус jquery
isTouch = document.createTouch !== undefined
Я хотел бы знать, есть ли у нас аналогичная формулировка в PHP, а не isset(), но буквально проверяющая значение undefined, что-то вроде:
$isTouch != ""
Есть ли что-то подобное, как указано выше в PHP?
Ответы
Ответ 1
Вы можете использовать -
$isTouch = isset($variable);
Он сохранит true
, если $variable
определено else false
. Если нужно, наоборот, просто удалите !
.
Примечание. Возвращает TRUE, если существует var, и имеет значение, отличное от NULL, FALSE в противном случае.
Или, если вы хотите проверить false
, 0
и т.д., также используйте empty()
-
$isTouch = empty($variable);
empty()
работает для -
- "" (пустая строка)
- 0 (0 как целое число)
- 0.0 (0 как плавающий)
- "0" (0 в виде строки)
- NULL
- FALSE
- array() (пустой массив)
- $var; (объявленная переменная, но без значения)
Ответ 2
Другой способ:
if($test){
echo "Yes 1";
}
if(!is_null($test)){
echo "Yes 2";
}
$test = "hello";
if($test){
echo "Yes 3";
}
Вернется:
"Yes 3"
Лучше всего использовать isset(), иначе вы можете получить ошибку, например, "undefined $test".
Вы можете сделать это следующим образом:
if( isset($test) && ($test!==null) )
У вас не будет никакой ошибки, потому что первое условие не принято.
Ответ 3
Чтобы проверить, установлена ли переменная, вам нужно использовать функцию 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 />';
}
этот код напечатает:
isset true
isset false
читайте больше в https://php.net/manual/en/function.isset.php
Ответ 4
Вы можете использовать -
Тернарный оппортер, чтобы проверить значение ролика, установленное POST/GET или не таким, как это
$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'] : '';
Ответ 5
if(isset($variable)){
$isTouch = $variable;
}
ИЛИ
if(!isset($variable)){
$isTouch = "";//
}
Ответ 6
Оператор JavaScript "строго не равен" (!==
) при сравнении с undefined
делает не результатом false
on null
.
var createTouch = null;
isTouch = createTouch !== undefined // true
Чтобы добиться эквивалентного поведения в PHP, вы можете проверить, существует ли имя переменной в ключах результата 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();
В большинстве случаев подходит isset($variable)
. Это эквивалентно array_key_exists('variable', get_defined_vars()) && null !== $variable
. Если вы просто используете null !== $variable
без предварительной проверки для существования, вы будете испортить свои журналы с предупреждениями, потому что это попытка прочитать значение переменной undefined.
Однако вы можете применить переменную undefined к ссылке без предупреждения:
// 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