PHP - Überprüfen Sie, ob die Variable undefiniert ist

92

Betrachten Sie diese Abfrage

isTouch = document.createTouch !== undefined

Ich würde gerne wissen, ob wir eine ähnliche Anweisung in PHP haben, nicht isset (), sondern buchstäblich nach einem undefinierten Wert suchen, so etwas wie:

$isTouch != ""

Gibt es etwas Ähnliches wie oben in PHP?

Timothy Coetzee
quelle

Antworten:

170

Sie können verwenden -

$isTouch = isset($variable);

Es wird zurückgegeben, truewenn das $variabledefiniert ist. Wenn die Variable nicht definiert ist, wird sie zurückgegeben false.

Hinweis: Gibt TRUE zurück, wenn var vorhanden ist und einen anderen Wert als NULL hat, andernfalls FALSE.

Wenn Sie überprüfen wollen false, 0etc können Sie dann verwenden empty()-

$isTouch = empty($variable);

empty() funktioniert für -

  • "" (eine leere Zeichenfolge)
  • 0 (0 als Ganzzahl)
  • 0,0 (0 als Schwimmer)
  • "0" (0 als Zeichenfolge)
  • NULL
  • FALSCH
  • array () (ein leeres Array)
  • $ var; (eine deklarierte Variable, aber ohne Wert)
Sougata Bose
quelle
1
isset()gibt immer bool zurück.
VeeeneX
Ist die boolesche Besetzung notwendig? isset (...) gibt bool schon zurück oder?
Cr3aHal0
1
Nein, es kehrt zurück trueoder false. Das Casting ist also nicht nötig.
Sougata Bose
1
Sie können dies auch tun, indem Sie das verwenden, empty()das false zurückgibt, wenn es sich um eine leere Zeichenfolge handelt. isset()gibt true zurück, wenn es sich um eine leere Zeichenfolge handelt. Auch leer führt eine interne Isset-Prüfung durch.
Mikrofon
1
Sie könnten dies auch tun: Dies $isTouch = (bool) $variable;wird das Gleiche tun isset()und ist vielleicht ein bisschen besser, da es so funktioniert empty().
Mikrofon
20

Ein anderer Weg ist einfach:

if($test){
    echo "Yes 1";
}
if(!is_null($test)){
    echo "Yes 2";
}

$test = "hello";

if($test){
    echo "Yes 3";
}

Wird zurückkehren :

"Yes 3"

Am besten verwenden Sie isset (), andernfalls kann ein Fehler wie "undefined $ test" auftreten.

Sie können es so machen:

if( isset($test) && ($test!==null) )

Sie haben keinen Fehler, da die erste Bedingung nicht akzeptiert wird.

TiDJ
quelle
Wenn wir $test!==nullohne Klammern verwenden, was wird dann passieren? Wird es einen Fehler geben?
Vir
Nein, es ist auch in Ordnung.
TiDJ
7

Um zu überprüfen, ob die Variable gesetzt ist, müssen Sie die Funktion isset verwenden.

$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 />';
}

Dieser Code wird gedruckt:

isset true
isset false

Lesen Sie mehr unter https://php.net/manual/en/function.isset.php

ErasmoOliveira
quelle
6

Sie können verwenden -

Ternärer Oprator, um den von POST / GET eingestellten Wetterwert zu überprüfen oder nicht

$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'] : '';
Sumit Thakur
quelle
3

Der JavaScript-Operator 'strict not same' ( !==) im Vergleich zu undefinedführt nicht zu falseon- nullWerten.

var createTouch = null;
isTouch = createTouch !== undefined  // true

Um ein gleichwertiges Verhalten in PHP zu erreichen, können Sie überprüfen, ob der Variablenname in den Schlüsseln des Ergebnisses von vorhanden ist 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();

In den meisten Fällen isset($variable)ist angemessen. Das ist aquivalent zu array_key_exists('variable', get_defined_vars()) && null !== $variable. Wenn Sie nur verwenden, null !== $variableohne die Existenz vorab zu überprüfen, werden Sie Ihre Protokolle mit Warnungen durcheinander bringen, da dies ein Versuch ist, den Wert einer undefinierten Variablen zu lesen .

Sie können jedoch eine undefinierte Variable ohne Warnung auf eine Referenz anwenden:

// 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
Quasimodos Klon
quelle
1

Mit der PHP- Funktion isset () können Sie testen, ob eine Variable gesetzt ist oder nicht. Das isset () gibt FALSE zurück, wenn eine Variable getestet wird, die auf NULL gesetzt wurde. Beispiel:

<?php
    $var1 = '';
    if(isset($var1)){
        echo 'This line is printed, because the $var1 is set.';
    }
?>

Dieser Code gibt "Diese Zeile wird gedruckt, weil $ var1 gesetzt ist."

Lesen Sie mehr unter https://stackhowto.com/how-to-check-if-a-variable-is-undefined-in-php/

Thomas
quelle
0
if(isset($variable)){
    $isTouch = $variable;
}

ODER

if(!isset($variable)){
    $isTouch = "";// 
}
Waruna Manjula
quelle