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
(দ্রষ্টব্য==
)