Considere esta declaración de jquery
isTouch = document.createTouch !== undefined
Me gustaría saber si tenemos una declaración similar en PHP, que no sea isset () sino que literalmente verifique un valor indefinido, algo como:
$isTouch != ""
¿Hay algo similar a lo anterior en PHP?
Respuestas:
Puedes usar -
$isTouch = isset($variable);
Volverá
true
si$variable
está definido. si la variable no está definida, regresaráfalse
.Si desea verificar
false
,0
etc. , puede usarempty()
-$isTouch = empty($variable);
empty()
trabaja para -fuente
isset()
siempre devuelve bool.true
ofalse
. Así que no hay necesidad de ese casting.empty()
que devolvería falso si es una cadena vacía.isset()
devolverá verdadero si es una cadena vacía, también vacía hace una verificación interna de isset.$isTouch = (bool) $variable;
que hará lo mismoisset()
y tal vez sea un poco mejor ya que funcionará comoempty()
.Otra forma es simplemente:
if($test){ echo "Yes 1"; } if(!is_null($test)){ echo "Yes 2"; } $test = "hello"; if($test){ echo "Yes 3"; }
Regresará:
"Yes 3"
La mejor manera es usar isset (), de lo contrario, puede tener un error como "prueba $ indefinida".
Puedes hacerlo así:
if( isset($test) && ($test!==null) )
No tendrás ningún error porque no se acepta la primera condición.
fuente
$test!==null
sin corchetes, ¿qué pasará? ¿Dará error?Para comprobar si la variable está configurada, debe usar la función 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 />'; }
este código imprimirá:
isset true isset false
leer más en https://php.net/manual/en/function.isset.php
fuente
Puedes usar -
Operador ternario para verificar si el valor establecido por POST / GET o no algo como esto
$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'] : '';
fuente
JavaScript de 'estricta es igual a' operador (
!==
) en comparación con losundefined
no no como resultadofalse
denull
valores.var createTouch = null; isTouch = createTouch !== undefined // true
Para lograr un comportamiento equivalente en PHP, puede verificar si el nombre de la variable existe en las claves del resultado de
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();
En la mayoría de los casos,
isset($variable)
es apropiado. Eso es equivalente aarray_key_exists('variable', get_defined_vars()) && null !== $variable
. Si solo usanull !== $variable
sin verificar previamente la existencia, estropeará sus registros con advertencias porque es un intento de leer el valor de una variable indefinida.Sin embargo, puede aplicar una variable indefinida a una referencia sin ninguna advertencia:
// 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
fuente
if(isset($variable)){ $isTouch = $variable; }
O
if(!isset($variable)){ $isTouch = "";// }
fuente