PHP - जांचें कि क्या चर अपरिभाषित है


87

इस jquery क़ानून पर विचार करें

isTouch = document.createTouch !== undefined

मैं जानना चाहूंगा कि क्या हमारे पास PHP में एक जैसा कथन है, isset () नहीं है, लेकिन वस्तुतः एक अपरिभाषित मूल्य के लिए जाँच कर रहा है, कुछ इस तरह है:

$isTouch != ""

क्या PHP में उपरोक्त के समान कुछ है?


जवाबों:


167

आप उपयोग कर सकते हैं -

$isTouch = isset($variable);

यह वापस आ जाएगी true, तो $variableपरिभाषित किया गया है। यदि चर परिभाषित नहीं है, तो यह वापस आ जाएगा false

नोट: अगर TR मौजूद है, तो TRUE लौटाता है और इसमें NULL, FALSE के अलावा अन्य मूल्य हैं।

यदि आप जांच करना चाहते हैं false, 0आदि तो आप उपयोग कर सकते हैं empty()-

$isTouch = empty($variable);

empty() के लिए काम करता है -

  • "" (एक रिक्त स्ट्रिंग)
  • 0 (0 एक पूर्णांक के रूप में)
  • 0.0 (एक फ्लोट के रूप में)
  • "0" (एक स्ट्रिंग के रूप में)
  • शून्य
  • असत्य
  • सरणी () (खाली सरणी)
  • वर $; (एक वैरिएबल घोषित, लेकिन बिना मूल्य के)

1
isset()हमेशा बूल लौटता है।
विनेक्स

क्या बूलियन कास्ट आवश्यक है? isset (...) क्या पहले से ही बूल सही लौटाता है?
Cr3aHal0

1
नहीं, यह वापसी trueया false। इसलिए उस कास्टिंग की कोई जरूरत नहीं है।
सौगता बोस

1
आप यह भी कर सकते हैं कि empty()अगर यह एक खाली स्ट्रिंग है तो झूठे का उपयोग करके । isset()सच है अगर इसकी एक खाली स्ट्रिंग, भी खाली आंतरिक रूप से एक isset जाँच करता है।
mic

1
आप यह भी कर सकते हैं: $isTouch = (bool) $variable;जो जैसा करेगा वैसा ही करेगा isset()और शायद थोड़ा बेहतर होगा क्योंकि यह काम करेगा empty()
माइक

19

एक और तरीका बस है:

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

$test = "hello";

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

वापस होगा :

"Yes 3"

सबसे अच्छा तरीका है इस्सेट () का उपयोग करना, अन्यथा आपके पास "अपरिभाषित $ परीक्षण" जैसी त्रुटि हो सकती है।

आप इसे इस तरह से कर सकते हैं:

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

आपको कोई त्रुटि नहीं होगी क्योंकि पहली शर्त स्वीकार नहीं की गई है।


अगर हम $test!==nullबिना कोष्ठक का उपयोग करते हैं, तो क्या होगा? क्या यह त्रुटि देगा?
वीर

नहीं, यह भी ठीक है।
TiDJ

7

जाँच करने के लिए चर है सेट आप 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 में और पढ़ें


6

आप उपयोग कर सकते हैं -

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

3

जावास्क्रिप्ट की 'सख्त बराबर नहीं' ऑपरेटर ( !==) के साथ तुलना पर undefinedहै नहीं में परिणाम falseपर 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अस्तित्व के लिए बिना पूर्व- उपयोग के उपयोग करते हैं, तो आप अपने लॉग को चेतावनी के साथ गड़बड़ कर देंगे क्योंकि यह एक अपरिभाषित चर के मूल्य को पढ़ने का प्रयास है ।

हालाँकि, आप बिना किसी चेतावनी के एक अपरिभाषित चर को संदर्भ में लागू कर सकते हैं:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.