2010-12-30 14 views
210

दोनों की जांच क्यों करें isset और !empty के बीच कोई अंतर है। अगर मैं यह डबल बूलियन चेक करता हूं, तो क्या यह इस तरह से या अनावश्यक है? और क्या वही काम करने का एक छोटा रास्ता है?दोनों जारीकर्ता() और! खाली()

isset($vars[1]) AND !empty($vars[1]) 
+1

उन्हें चर के विभिन्न प्रकार के साथ प्रयोग के परिणामों पर एक अच्छा चार्ट नहीं है (उनके पास मतभेद हैं) यहां: https://www.virendrachandak.com/demos/php-isset-vs-empty-vs-is_null.php –

+0

स्पष्ट सटीक पूरक हैं सेट और is_null, लेकिन! खाली कुछ अलग कवर शामिल हैं। यह सब उस डेटा के प्रकार पर निर्भर करता है जिसके लिए आप परीक्षण कर रहे हैं। –

उत्तर

333

यह पूरी तरह से अनावश्यक है। empty!isset($foo) || !$foo के लिए कम या कम शॉर्टेंड है, और !emptyisset($foo) && $foo के समान है। अर्थात। emptyisset की रिवर्स चीज और सत्यता के मूल्य के लिए एक अतिरिक्त जांच करता है।

या दूसरे शब्दों में, empty!$foo जैसा ही है, लेकिन यदि चर मौजूद नहीं है तो चेतावनियां नहीं फेंकती हैं। यह इस फ़ंक्शन का मुख्य बिंदु है: चर के सेट के बारे में चिंता किए बिना बुलियन तुलना करें।

The manual इस तरह कहते हैं:

empty() सिवाय इसके कि कोई चेतावनी उत्पन्न होता है जब चर सेट नहीं है (boolean) var, के विपरीत है।

आप यहां !empty($vars[1]) का उपयोग कर सकते हैं।

+3

लेकिन फिर यदि कोई '$ vars [1]' नहीं है तो उसे नोटिस मिलेगा। – karim79

+48

@karim नहीं, वह नहीं करेगा। यही तो बात है। – deceze

+3

मुझे नहीं पता कि मुझे यह विचार कहां से मिला। इसके अलावा एक। – karim79

26

isset() परीक्षण करता है, तो एक चर सेट कर दिया जाता है और बातिल:

http://us.php.net/manual/en/function.isset.php

empty() सच लौट सकते हैं जब चर निश्चित मूल्यों के लिए सेट है:

http://us.php.net/manual/en/function.empty.php

करने के लिए इसे प्रदर्शित करें, $ the_var असाइन किए गए के साथ निम्न कोड आज़माएं, सेट करें 0, और 1. करने के लिए सेट

<?php 

#$the_var = 0; 

if (isset($the_var)) { 
    echo "set"; 
} else { 
    echo "not set"; 
} 

echo "\n"; 

if (empty($the_var)) { 
    echo "empty"; 
} else { 
    echo "not empty"; 
} 
?> 
4

खाली बस की जांच भेजा चर/सरणी अगर आप की जाँच php doc(empty) आप इस बातें emtpy माना जाता है देखेंगे एक मूल्य है

* "" (an empty string) 
* 0 (0 as an integer) 
* "0" (0 as a string) 
* NULL 
* FALSE 
* array() (an empty array) 
* var $var; (a variable declared, but without a value in a class) 

जारी करने के दौरान जांच करें कि क्या परिवर्तनीय जारीकर्ता और शून्य नहीं है जो php doc(isset)

0

"खाली": केवल चर पर काम करता है। रिक्त विभिन्न भिन्न प्रकारों के लिए अलग-अलग चीजों का मतलब हो सकता है (मैन्युअल जांचें: http://php.net/manual/en/function.empty.php)।

"जारीकर्ता": जांच करता है कि चर मौजूद है या सही या गलत मान के लिए जांच करता है। "अनसेट" कॉल करके अनसेट किया जा सकता है। एक बार फिर, मैनुअल की जांच करें।

किसी एक का उपयोग आप जिस वैरिएबल प्रकार का उपयोग कर रहे हैं उसके निर्भर करता है।

मैं कहूंगा, दोनों के लिए जांच करना सुरक्षित है, क्योंकि यदि आप चर मौजूद हैं तो आप सबसे पहले जांच कर रहे हैं, और यदि यह वास्तव में शून्य या खाली नहीं है।

+3

दोनों की जांच करने की आवश्यकता नहीं है। – deceze

+1

@szahn "दोनों के लिए जांच करने के लिए सुरक्षित", - आप प्रोग्रामर के रूप में सुरक्षा के लिए जो कुछ भी चाहते हैं उसे देख सकते हैं। लेकिन यदि आपका कोड अनावश्यक है तो आप प्रोग्रामर के रूप में अनावश्यक हो सकते हैं। – madlopt

8
$a = 0; 
if (isset($a)) { //$a is set because it has some value ,eg:0 
    echo '$a has value'; 
} 
if (!empty($a)) { //$a is empty because it has value 0 
    echo '$a is not empty'; 
} else { 
    echo '$a is empty'; 
} 
+1

लेकिन आपने वेरिएबल सेट सेट केस को संभाला नहीं है। –

1

अगर हम के माध्यम से की तरह

नीचे
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id"> 

तो हम उपयोग नहीं करना चाहिए

isset($_POST['edit_id']) 

edit_id bcoz हर समय यह है कि क्या सेट किया गया है/संपादन जोड़ने के बटन प्रस्तुत करने के लिए एक ही पृष्ठ का उपयोग पृष्ठ जोड़ें या संपादित करें, इसके बजाय हमें नीचे की स्थिति का उपयोग करना चाहिए

!empty($_POST['edit_id']) 
+0

पिछली पोस्ट bcoz सबमिट की गई थी, मैं गलती से एंटर दबाता हूं, मेरा पूरा जवाब है ... क्यों डाउनवोट? :( – diEcho

0

यह आवश्यक नहीं है।

परिवर्तक मौजूद नहीं होने पर कोई चेतावनी उत्पन्न नहीं होती है। इसका मतलब है खाली() अनिवार्य रूप से संक्षेप में संक्षिप्त है! जारीकर्ता ($ var) || $ var == झूठी।

php.net

+2

यह किसी भी PHP संस्करण पर कभी भी आवश्यक नहीं है, क्योंकि रिक्त पहले से ही जारी नहीं है (नहीं) जारी करने के लिए। आप इस तथ्य को भ्रमित कर रहे हैं कि खाली अब प्रश्न के साथ अभिव्यक्तियों का समर्थन करता है। – Think

+0

यह सही है। आप सही हैं। – madlopt

8

स्वीकार किए जाते हैं जवाब सही नहीं है।

जारीकर्ता() के बराबर नहीं है! खाली()।

यदि आप इस मार्ग पर जाते हैं तो आप कुछ अप्रिय और बग डीबग करने के लिए कड़ी मेहनत करेंगे। जैसे इस कोड को चलाने का प्रयास करें:

<?php 

$s = ''; 

print "isset: '" . isset($s) . "'. "; 
print "!empty: '" . !empty($s) . "'"; 

?> 

https://3v4l.org/J4nBb

0

कैसे कि

function IsEmpty($myVar){ 
    if(isset($myVar) && (!empty($myVar) OR $myVar === 0 OR $myVar === false) ){ 
     return false; 
    } else{ 
     return true; 
    } 
} 

$myVar = 0; // Set and Not Empty 
$myVar = true; // Set and Not Empty 
$myVar = false; // Set and Not Empty 
$myVar = ''; // Either Not Set or Empty 
$myVar = 'abc'; // Set and Not Empty 

if(!IsEmpty($myVar)){ 
    echo 'Set and Not Empty'; 
} else{ 
    echo 'Either Not Set or Empty'; 
} 

डेमो के बारे में: http://sandbox.onlinephpfunctions.com/code/7131f142742f0765c2619841bb9abfa598bcf066

संबंधित मुद्दे