वहाँ के बीच एक अंतर है issetऔर !empty। अगर मैं यह डबल बूलियन जांच करता हूं, तो क्या यह इस तरह से सही है या निरर्थक है? और क्या ऐसा ही करने का एक छोटा तरीका है?
isset($vars[1]) AND !empty($vars[1])
वहाँ के बीच एक अंतर है issetऔर !empty। अगर मैं यह डबल बूलियन जांच करता हूं, तो क्या यह इस तरह से सही है या निरर्थक है? और क्या ऐसा ही करने का एक छोटा तरीका है?
isset($vars[1]) AND !empty($vars[1])
जवाबों:
यह पूरी तरह से बेमानी है। emptyके लिए अधिक या कम आशुलिपि है !isset($foo) || !$foo, और !emptyके अनुरूप है isset($foo) && $foo। Ie मूल्य की सत्यता के लिए प्लस की एक अतिरिक्त जांच emptyकी रिवर्स बात करता है । isset
या दूसरे शब्दों में, emptyवैसा ही है !$foo, लेकिन अगर चर मौजूद नहीं है तो चेतावनी नहीं फेंकते। यह इस समारोह का मुख्य बिंदु है: चर सेट किए जाने के बारे में चिंता किए बिना एक बूलियन तुलना करें।
मैनुअल इसे इस तरह डालता है:
empty()इसके विपरीत है(boolean) var, सिवाय इसके कि कोई चेतावनी उत्पन्न नहीं होती है जब चर सेट नहीं किया जाता है।
आप बस !empty($vars[1])यहाँ उपयोग कर सकते हैं।
$vars[1]वह एक नोटिस मिलेगा।
emptyPHP में सबसे गलत समझा कार्यों में से एक है। "कोई चेतावनी उत्पन्न नहीं होती है" के बारे में छोटे स्निपेट को अनदेखा करना बहुत आसान है। मुझे इसे यहाँ पोस्ट करने के लिए खुद को कुछ समय के लिए दस्तावेज़ को स्कैन करना पड़ा।
empty($vars[1])किसी भी चेतावनी का कारण भी $vars[1]सेट नहीं है, लेकिन echo $vars[1]होगा। मैंने तथ्य का उपयोग करके जाँच की echo $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;।
0के रूप में false। PHP केवल एक ही नहीं है। फिर भी निश्चित नहीं है कि आपकी शिकायत क्या है।
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";
}
?>
स्वीकृत उत्तर सही नहीं है।
isset () खाली () के बराबर नहीं है ।
यदि आप इस मार्ग से नीचे जाते हैं, तो आप बगों को डिबग करने के लिए कुछ अप्रिय और कठिन बना देंगे। उदाहरण के लिए इस कोड को चलाने का प्रयास करें:
<?php
$s = '';
print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";
?>
issetइसके बराबर है !empty।
$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';
}
खाली चेक केवल संदर्भित चर / सरणी का एक मान होता है यदि आप php doc (खाली) की जांच करते हैं तो आप देखेंगे कि यह चीजें 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 डॉक्टर में भी पाया जा सकता है (isset)
यह आवश्यक नहीं है।
यदि चर मौजूद नहीं है, तो कोई चेतावनी उत्पन्न नहीं होती है। इसका मतलब है कि खाली () अनिवार्य रूप से संक्षिप्त (isset ($ var)) के बराबर है || $ वर == असत्य।
isset($vars[1]) AND !empty($vars[1])के बराबर है !empty($vars[1])।
मैंने इसे आनुभविक रूप से दिखाने के लिए सरल कोड तैयार किया।
अंतिम पंक्ति अपरिभाषित चर है।
+-----------+---------+---------+----------+---------------------+
| Var value | empty() | isset() | !empty() | isset() && !empty() |
+-----------+---------+---------+----------+---------------------+
| '' | true | true | false | false |
| ' ' | false | true | true | true |
| false | true | true | false | false |
| true | false | true | true | true |
| array () | true | true | false | false |
| NULL | true | false | false | false |
| '0' | true | true | false | false |
| 0 | true | true | false | false |
| 0.0 | true | true | false | false |
| undefined | true | false | false | false |
+-----------+---------+---------+----------+---------------------+
और कोड
$var1 = "";
$var2 = " ";
$var3 = FALSE;
$var4 = TRUE;
$var5 = array();
$var6 = null;
$var7 = "0";
$var8 = 0;
$var9 = 0.0;
function compare($var)
{
print(var_export($var, true) . "|" .
var_export(empty($var), true) . "|" .
var_export(isset($var), true) . "|" .
var_export(!empty($var), true) . "|" .
var_export(isset($var) && !empty($var), true) . "\n");
}
for ($i = 1; $i <= 9; $i++) {
$var = 'var' . $i;
compare($$var);
}
@print(var_export($var10, true) . "|" .
var_export(empty($var10), true) . "|" .
var_export(isset($var10), true) . "|" .
var_export(!empty($var10), true) . "|" .
var_export(isset($var10) && !empty($var10), true) . "\n");
अपरिभाषित चर का मूल्यांकन बाहर के फ़ंक्शन से किया जाना चाहिए, क्योंकि फ़ंक्शन स्वयं कार्यक्षेत्र में अस्थायी चर बनाता है।
"खाली": केवल चर पर काम करता है। विभिन्न चर प्रकारों के लिए खाली का मतलब अलग-अलग हो सकता है (चेक मैनुअल: http://php.net/manual/en/function.empty.emp )।
"isset": जाँचता है कि क्या चर मौजूद है और एक सच्चे NULL या गलत मान के लिए जाँच करता है। "परेशान" कहकर परेशान किया जा सकता है। एक बार फिर, मैनुअल की जांच करें।
आपके द्वारा उपयोग किए जा रहे चर प्रकार पर निर्भर करता है।
मैं कहूंगा, यह दोनों के लिए जाँच करने के लिए सुरक्षित है, क्योंकि आप सबसे पहले जाँच कर रहे हैं कि चर मौजूद है या नहीं और अगर यह वास्तव में रिक्त या खाली नहीं है।
अगर हम नीचे दिए गए सबमिट बटन के माध्यम से जोड़ने / संपादित करने के लिए एक ही पृष्ठ का उपयोग करते हैं
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
तो हमें उपयोग नहीं करना चाहिए
isset($_POST['edit_id'])
bcoz edit_idको हर समय सेट किया जाता है चाहे वह पृष्ठ जोड़ें या संपादित करें, इसके बजाय हमें नीचे दी गई स्थिति का उपयोग करना चाहिए
!empty($_POST['edit_id'])
empty()फ़ंक्शन का जिक्र करते हुए :FALSEयदि varगैर-रिक्त और गैर-शून्य मान है, तो लौटाता है ।
यह जानना अच्छी बात है। दूसरे शब्दों में, से सब कुछ में NULL, करने के लिए 0करने के लिए "" वापस आ जाएगी TRUEजब का उपयोग कर empty()कार्य करते हैं।
isset()फ़ंक्शन क्या देता है:रिटर्न TRUEअगर varमौजूद है, FALSEअन्यथा।
दूसरे शब्दों में, केवल वे चर जो अस्तित्व में नहीं हैं (या, कड़ाई से NULLमान वाले चर ) फ़ंक्शन FALSEपर लौट आएंगे isset()। सभी चर जिनमें किसी भी प्रकार का मूल्य है, चाहे वह 0एक खाली पाठ स्ट्रिंग हो, आदि वापस आ जाएंगे TRUE।