2015-05-12 16 views
33

Betrachten Sie dieses jquery statmentPHP - überprüfen, ob die Variable nicht definiert ist

isTouch = document.createTouch !== undefined 

Ich mag würde wissen, ob wir eine ähnliche Aussage in PHP haben, nicht isset zu sein(), sondern buchstäblich für einen nicht definierten Wert überprüft, so etwas wie :

$isTouch != ""

gibt es in PHP etwas ähnlich wie die oben?

+2

möglich Duplikat [PHP: "Hinweis: Nicht definierte Variable" und "Notice: Undefined index"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice -Undefinierter Index) – Machavity

Antwort

44

können Sie verwenden -

$isTouch = isset($variable); 

Es true speichern, wenn $variable sonst false definiert ist. Wenn nötig, entfernen Sie einfach die !.

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

Oder wenn Sie für false überprüfen möchten, 0 etc auch dann verwenden empty() -

$isTouch = empty($variable); 

empty() Werke für -

  • ""(eine leere Zeichenkette)
  • (0 als eine ganze Zahl)
  • 0,0(0 als Schwimmer)
  • "0"(0 als eine Zeichenfolge)
  • NULL
  • FALSCH
  • array()(ein leeres Array)
  • $ var;(eine Variable deklariert, aber ohne Wert)
+1

'isset()' gibt immer bool zurück. – VeeeneX

+0

Ist die Boole'sche Besetzung notwendig? isset (...) kommt schon wieder bool right? – Cr3aHal0

+1

Nein. Es gibt "wahr" oder "falsch" zurück. Also kein Bedarf an diesem Casting. –

5

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

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

wird dieser Code drucken:

isset true 
isset false 

mehr lesen https://php.net/manual/en/function.isset.php in

14

Eine andere Art und Weise einfach ist:

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

$test = "hello"; 

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

Wir kommen wieder:

"Yes 3" 

Der beste Weg ist die Verwendung von isset(), andernfalls kann ein Fehler wie "undefined $ test" auftreten.

Sie können es wie folgt tun:

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

Sie werden keine Fehler, weil die erste Bedingung nicht akzeptiert wird.

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

ODER

if(!isset($variable)){ 
    $isTouch = "";// 
} 
0

JavaScript ist 'streng nicht gleich' Operator (!==) auf dem Vergleich mit undefined tut nicht Ergebnis in false auf null Werte.

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 Tasten des Ergebnisses der get_defined_vars() existiert.

// 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 ist isset($variable) geeignet. Das ist äquivalent zu array_key_exists('variable', get_defined_vars()) && null !== $variable. Wenn Sie einfach null !== $variable ohne Vorprüfung für das Vorhandensein verwenden, werden Sie Ihre Protokolle mit Warnungen durcheinander bringen, weil dies der Versuch ist, den Wert einer undefinierten Variablen zu lesen.

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

// 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 
3

Sie verwenden können -

Ternary oprator zu überprüfen wheather Wert von POST gesetzt/GET oder nicht so somthing

$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'] : ''; 
Verwandte Themen