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
। অর্থাত empty
কোনও মানের সত্যতা বাড়াতেisset
অতিরিক্ত চেকের বিপরীত জিনিসটি করে ।
বা অন্য কথায়, empty
একই !$foo
, তবে ভেরিয়েবলের অস্তিত্ব না থাকলে সতর্কতা ছুঁড়ে না। এটি এই ফাংশনের মূল বিষয়: ভেরিয়েবল সেট হওয়ার বিষয়ে চিন্তা না করেই বুলিয়ান তুলনা করুন।
ম্যানুয়ালটি এটি এইভাবে রাখে:
empty()
এর বিপরীত(boolean) var
, যখন ভেরিয়েবল সেট না করা হয় তখন কোনও সতর্কতা তৈরি হয় না।
আপনি কেবল !empty($vars[1])
এখানে ব্যবহার করতে পারেন ।
$vars[1]
সে একটি নোটিশ পাবে।
empty
পিএইচপি-র সবচেয়ে ভুল বোঝাবুঝি functions "কোনও সতর্কতা উত্পন্ন হয় না" সম্পর্কে ছোট স্নিপেটটি উপেক্ষা করা খুব সহজ। এটি এখানে পোস্ট করার জন্য আমাকে কয়েকবার ডকুমেন্টেশনটি স্ক্যান করতে হয়েছিল।
empty($vars[1])
এমনকি কোনও সতর্কবার্তা এমনকি $vars[1]
সেট করা হয় না, কিন্তু echo $vars[1]
করবে but আমি ব্যবহার করে সত্যতা যাচাই echo $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;
।
0
করে false
। পিএইচপি একমাত্র নয়। আপনার অভিযোগ কি তা এখনও নিশ্চিত নন।
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';
}
খালি খালি চেক হ'ল রেফার্ড ভেরিয়েবল / অ্যারের একটি মান রয়েছে যদি আপনি পিএইচপি ডকটি পরীক্ষা করেন (খালি) আপনি দেখতে পাবেন যে এই জিনিসগুলি এমটিপি হিসাবে বিবেচিত হবে
* "" (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)
যখন আইসেটটি পরীক্ষা করে চলকটি পরিবর্তনশীল হয় এবং নাল নয় যা পিএইচপি ডকটিতেও পাওয়া যায় (আইসেট)
এটি র কোন দরকার নাই.
ভেরিয়েবলের অস্তিত্ব না থাকলে কোনও সতর্কতা উত্পন্ন হয় না। তার মানে খালি () মূলত! Isset ($ var) এর সংক্ষিপ্ত সমতুল্য || $ 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.php )।
"isset": ভেরিয়েবলটি বিদ্যমান কিনা তা পরীক্ষা করে এবং একটি সত্য নল বা মিথ্যা মান পরীক্ষা করে। "আনসেট" কল করে আনসেট করা যেতে পারে। আবার, ম্যানুয়াল পরীক্ষা করে দেখুন।
যে কোনও একটির ব্যবহার আপনি যে পরিবর্তনশীল ধরণের ব্যবহার করছেন তা নির্ভর করে।
আমি বলব, উভয়ের জন্য যাচাই করা এটি আরও নিরাপদ, কারণ আপনি যদি ভেরিয়েবলটি উপস্থিত থাকে তবে আপনি প্রথমে যাচাই করছেন এবং যদি এটি সত্যই নাল বা খালি না থাকে।
আমরা যদি নীচের মতো সাবমিট বোতামের মাধ্যমে যুক্ত / সম্পাদনা করতে একই পৃষ্ঠা ব্যবহার করি
<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
।