NULLপিএইচপি-তে আমার একটি প্রশ্ন রয়েছে :
$a = '';
if($a == NULL) {
echo 'is null';
}
খালি স্ট্রিং থাকাকালীন আমি কেন নাল দেখতে পাচ্ছি $a? এটা কি বাগ?
NULLপিএইচপি-তে আমার একটি প্রশ্ন রয়েছে :
$a = '';
if($a == NULL) {
echo 'is null';
}
খালি স্ট্রিং থাকাকালীন আমি কেন নাল দেখতে পাচ্ছি $a? এটা কি বাগ?
উত্তর:
আপনি যা সন্ধান করছেন তা হ'ল:
if($variable === NULL) {...}
নোট করুন ===।
যখন ==আপনি করেছেন, পিএইচপি যখন নুল , মিথ্যা , 0 , খালি স্ট্রিং এবং খালি অ্যারে সমান হিসাবে ব্যবহার করে তখন ব্যবহার করুন ।
== nullখালি স্ট্রিংয়ের সাথে মিলছে এবং কেবল নাল বা অপরিজ্ঞাত নয়।
$a = ''একটি খালি string, falseএকটি বুলিয়ান, $a = 0;একটি পূর্ণসংখ্যা এবং nullটাইপ থেকে হয় null। ওপি যা বলছে তা হ'ল পিএইচপি তাদের মান হিসাবে "একই" হিসাবে থ্রেড করবে, তবে "একই" টাইপের মতো নয়। সুতরাং একটি কঠোর === চেক টাইপ পরীক্ষা করেও পরীক্ষা করে ব্যর্থ হবে এবং যদি আপনি বিভিন্ন ব্যবহার করেন তবে ব্যর্থ। আপনার রিটার্নের মানগুলিতে দৃ cons় হওয়া উচিত। আপনি normaly মত একটি পদ্ধতিতে একটি স্ট্রিং ফিরে আসেন তবে getName(), তাই না পাওয়া উচিত nullযখন এটা খালি একটি emtpy কিন্তু সম্ভাবনা বেশি স্ট্রিং $user->getName() === '' বা $user->getId() === 0বা $user->isActive === false। উদ্দেশ্যমূলক আচরণ!
যেমনটি নিম্নলিখিত টেবিলটিতে প্রদর্শিত হবে, empty($foo)এর সমান $foo==nullএবং is_null($foo)এর একই ফাংশন রয়েছে $foo===null। টেবিলটি nullতুলনা সম্পর্কিত কিছু কৌশলগত মানও দেখায় । (unin একটি অবিচ্ছিন্ন ভেরিয়েবলগুলি বোঝায়))
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
আমি কখনও ব্যবহার empty()এবং is_null()ফাংশন। সাধারণ তুলনাটি ব্যবহার করা কম অস্পষ্ট, দ্রুত এবং ক্লিনার। বিশেষত মিলের জন্য কম কোঁকড়া বন্ধনী থাকবে।
যেমন if($x==null || $y==null)বনামif(is_null($x) || is_null($y))
==nullএবং ===null।
==বনাম চেক করুন===
'' == NULLসত্য
0 == NULLফিরে আসবে সত্য
false == nullফিরে আসবে সত্য ফিরে আসবে
যেখানে হিসাবে
'' === NULLমিথ্যা
0 === NULLপ্রত্যাবর্তিত হবে মিথ্যা
false === NULLপ্রত্যাবর্তিত হবে মিথ্যা
না এটি কোনও বাগ নয়। == টেবিল (দ্বিতীয় সারণী) এর সাথে লুজ তুলনাগুলি দেখুন , যা প্রথম স্তম্ভের প্রতিটি মানকে অন্যান্য কলামের মানগুলির সাথে তুলনার ফলাফল দেখায়:
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
সেখানে আপনি দেখতে পারেন যে একটি খালি স্ট্রিং ""সঙ্গে তুলনা false, 0, NULLবা ""সত্য উত্পাদ হবে।
পরিবর্তে আপনি is_null [ডক্স] , বা কঠোর তুলনা (তৃতীয় টেবিল) ব্যবহার করতে চাইতে পারেন ।
0করা একটি স্ট্রিং যখন স্ট্রিংয়ে কাস্ট করা হয় তখন রূপান্তরিত হয় : কোডেপ্যাড.আর.জি . / কিউইলএসজি 3 ই । তাই (int)"php" == 0।
এই নয় একটি বাগ কিন্তু পিএইচপি স্বাভাবিক আচরণ। এটি ঘটে কারণ ==পিএইচপি-তে অপারেটর প্রকারের জন্য পরীক্ষা করে না।
'' == null == 0 == false
আপনি যদি মানগুলি একই ধরণের আছে কিনা তা পরীক্ষা করতে চান তবে ===পরিবর্তে ব্যবহার করুন। এই পার্থক্যটি গভীরভাবে অধ্যয়নের জন্য, দয়া করে সরকারী ডকুমেন্টেশন পড়ুন ।
আপনি যদি ব্যবহার ==করেন তবে পিএইচপি একটি খালি স্ট্রিং বা অ্যারের হিসাবে ব্যবহার করে null। মধ্যে পার্থক্য করতে nullএবং empty, হয় ব্যবহার ===বা is_null। তাই:
if($a === NULL) অথবা if(is_null($a))
ব্যবহার করুন empty- http://php.net/manual/en/function.empty.php ।
উদাহরণ:
$a = '';
if(empty($a)) {
echo 'is empty';
}
$variable। আপনি যা চান তা হ'ল:$variable == null(দ্রষ্টব্য==)