আমাকে বলা হয়েছে যে ভাল ডেভেলপারদের স্পট / মধ্যে পার্থক্য ব্যবহার করতে পারে Null
এবং False
এবং 0
এবং সমস্ত অন্যান্য ভাল "কিছুই" সত্ত্বা।
কি হল পার্থক্য, পিএইচপি বিশেষভাবে? এর সাথে কিছু করার আছে ===
?
আমাকে বলা হয়েছে যে ভাল ডেভেলপারদের স্পট / মধ্যে পার্থক্য ব্যবহার করতে পারে Null
এবং False
এবং 0
এবং সমস্ত অন্যান্য ভাল "কিছুই" সত্ত্বা।
কি হল পার্থক্য, পিএইচপি বিশেষভাবে? এর সাথে কিছু করার আছে ===
?
উত্তর:
Null
" কিছুই না " এর অর্থ । ভেরি আরম্ভ করা হয়নি।
False
"" বুলিয়ান প্রসঙ্গে সত্য নয় "এর অর্থ । আপনি লজিক্যাল সমস্যা নিয়ে কাজ করছেন তা স্পষ্টভাবে প্রদর্শন করতে ব্যবহৃত হয়।
0
একটি int
। উপরে গণিতের জন্য ব্যবহৃত বাকীগুলির সাথে কিছুই করার নেই।
এখন, কী মুশকিল, এটি পিএইচপি এর মতো গতিময় ভাষায় , তাদের সকলের একটি বুলিয়ান প্রসঙ্গে একটি মান রয়েছে , যা (পিএইচপি-তে) False
।
আপনি যদি এটি দিয়ে পরীক্ষা করেন তবে ==
এটি বুলিয়ান মান পরীক্ষা করে, তাই আপনি সমতা পাবেন। আপনি যদি এটি দিয়ে ===
পরীক্ষা করেন তবে এটি ধরণের পরীক্ষা করবে এবং আপনি বৈষম্য পাবেন।
ঠিক আছে, strrpos()
ফাংশন তাকান। এটি যদি কিছু না পাওয়া যায় তবে এটি মিথ্যা ফিরিয়ে দেয়, তবে 0 টি যদি স্ট্রিংয়ের শুরুতে কিছু পাওয়া যায়!
<?php
// pitfall :
if (strrpos("Hello World", "Hello")) {
// never exectuted
}
// smart move :
if (strrpos("Hello World", "Hello") !== False) {
// that works !
}
?>
এবং অবশ্যই, যদি আপনি রাজ্যগুলির সাথে ডিল করেন:
আপনি DebugMode = False
(সেট আপ অফ), DebugMode = True
(সেট করা) এবং DebugMode = Null
(একেবারে সেট না করা, হার্ড ডিবাগিংয়ের দিকে নিয়ে যাবে) ;-) এর মধ্যে পার্থক্য তৈরি করতে চান ।
null
হয় null
। false
হয় false
। দুঃখের হলেও সত্য.
পিএইচপি তে খুব একটা ধারাবাহিকতা নেই। ডেভেলপারদের TRY নাল মানে হলো "অজানা" বা "অবর্তমান" করা। তবে প্রায়শই মিথ্যা 'অস্তিত্বহীন' হিসাবে পরিবেশন করবে (যেমন স্ট্রপপস ('ব্যর্থ', 'অনুসন্ধান') মিথ্যা ফিরে আসবে, এবং নাল নয়)
আপনি প্রায়শই নাল ব্যবহার করা দেখতে পাবেন যখন তারা ইতিমধ্যে কোনও কিছুর জন্য মিথ্যা ব্যবহার করছে। যেমন ফিল্টার_ইনপুট ()। ভেরিয়েবল ফিল্টার ব্যর্থ হলে তারা মিথ্যা প্রত্যাবর্তন করে। এবং নথটি যদি ভেরিয়েবলটি বিদ্যমান না থাকে (বিদ্যমান থাকে না তবে এটি ফিল্টারটিও ব্যর্থ হয়েছিল? সুতরাং কেন নাল ফেরায়?!?)
পিএইচপি ফাংশনগুলিতে তথ্য ফিরিয়ে দেওয়ার সুবিধে রয়েছে। এবং ডেভেলপারদের ডেটার পরিবর্তে সমস্ত ধরণের ব্যর্থতার স্থিতিতে ক্র্যাম করুন।
এবং পিএইচপি-তে ব্যর্থতা (মিথ্যা, নাল) থেকে ডেটা (ইন্ট, টিআর, ইত্যাদি) সনাক্ত করার কোনও বুদ্ধিমান উপায় নেই
ফাংশনের উপর নির্ভর করে আপনাকে সর্বদা পরীক্ষা করতে হবে === নাল বা === মিথ্যা। বা উভয়ের জন্য, ফিল্টার_ইনপুট () / ফিল্টার_ভার () এর মতো ক্ষেত্রে
টাইপ জাগলিং সহ এখানে কিছু মজা। এমনকি অ্যারে এবং অবজেক্টগুলিও অন্তর্ভুক্ত নয়।
var_dump( 0<0 ); #bool(false)
var_dump( 1<0 ); #bool(false)
var_dump( -1<0 ); #bool(true)
var_dump( false<0 ); #bool(false)
var_dump( null<0 ); #bool(false)
var_dump( ''<0 ); #bool(false)
var_dump( 'a'<0 ); #bool(false)
echo "\n";
var_dump( !0 ); #bool(true)
var_dump( !1 ); #bool(false)
var_dump( !-1 ); #bool(false)
var_dump( !false ); #bool(true)
var_dump( !null ); #bool(true)
var_dump( !'' ); #bool(true)
var_dump( !'a' ); #bool(false)
echo "\n";
var_dump( false == 0 ); #bool(true)
var_dump( false == 1 ); #bool(false)
var_dump( false == -1 ); #bool(false)
var_dump( false == false ); #bool(true)
var_dump( false == null ); #bool(true)
var_dump( false == '' ); #bool(true)
var_dump( false == 'a' ); #bool(false)
echo "\n";
var_dump( null == 0 ); #bool(true)
var_dump( null == 1 ); #bool(false)
var_dump( null == -1 ); #bool(false)
var_dump( null == false ); #bool(true)
var_dump( null == null ); #bool(true)
var_dump( null == '' ); #bool(true)
var_dump( null == 'a' ); #bool(false)
echo "\n";
$a=0; var_dump( empty($a) ); #bool(true)
$a=1; var_dump( empty($a) ); #bool(false)
$a=-1; var_dump( empty($a) ); #bool(false)
$a=false; var_dump( empty($a) ); #bool(true)
$a=null; var_dump( empty($a) ); #bool(true)
$a=''; var_dump( empty($a) ); #bool(true)
$a='a'; var_dump( empty($a)); # bool(false)
echo "\n"; #new block suggested by @thehpi
var_dump( null < -1 ); #bool(true)
var_dump( null < 0 ); #bool(false)
var_dump( null < 1 ); #bool(true)
var_dump( -1 > true ); #bool(false)
var_dump( 0 > true ); #bool(false)
var_dump( 1 > true ); #bool(true)
var_dump( -1 > false ); #bool(true)
var_dump( 0 > false ); #bool(false)
var_dump( 1 > true ); #bool(true)
var_dump( null == 0 );
।
0 == null
এবং null == []
, কিন্তু [] != 0
!!
strrpos('fail', 'search') will return false, and not null
আমার মতে সঠিক - যদি এর null
অর্থ অজানা থাকে তবে strrpos
ফিরে আসাটা null
এমনটি বলেছিল যে 'স্ট্রিংটি আছে কিনা তা আমি জানি না' বরং 'স্ট্রিংটি নেই'।
নীচে একটি উদাহরণ দেওয়া হল:
Comparisons of $x with PHP functions
Expression gettype() empty() is_null() isset() boolean : if($x)
$x = ""; string TRUE FALSE TRUE FALSE
$x = null; NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x is undefined NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; integer FALSE FALSE TRUE TRUE
$x = 42; integer FALSE FALSE TRUE TRUE
$x = 0; integer TRUE FALSE TRUE FALSE
$x = -1; integer FALSE FALSE TRUE TRUE
$x = "1"; string FALSE FALSE TRUE TRUE
$x = "0"; string TRUE FALSE TRUE FALSE
$x = "-1"; string FALSE FALSE TRUE TRUE
$x = "php"; string FALSE FALSE TRUE TRUE
$x = "true"; string FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE
পিএইচপি-তে প্রকারের তুলনার আরও রেফারেন্সের জন্য দয়া করে এটি দেখুন । এটি আপনাকে একটি স্পষ্ট বোঝা দেওয়া উচিত।
পিএইচপি-তে আপনি === এবং! == অপারেটরগুলি কেবল মানগুলি সমান কিনা তা পরীক্ষা করতে বা তাদের প্রকারের সাথে মেলে কিনা তা পরীক্ষা করতে পারেন। উদাহরণস্বরূপ: 0 == false
হয় true
, কিন্তু 0 === false
হয় false
। একই !=
বনাম জন্য যায় !==
। এছাড়াও যদি আপনি null
উল্লিখিত অপারেটরগুলি ব্যবহার করে অন্য দুটি সাথে তুলনা করেন, অনুরূপ ফলাফল আশা করুন।
এখন পিএইচপি-তে মানগুলির এই গুণটি সাধারণত ব্যবহৃত হয় যা কখনও কখনও 0
(শূন্য) হতে পারে এমন একটি মান ফেরত দেওয়ার সময় ব্যবহৃত হয় তবে কখনও কখনও এটি ফাংশনটি ব্যর্থ হতে পারে। পিএইচপি-তে এই ক্ষেত্রে আপনি ফিরে আসেন false
এবং আপনাকে পরিচয় অপারেটর ব্যবহার করে এই কেসগুলি পরীক্ষা করতে হবে ===
। উদাহরণস্বরূপ, যদি আপনি অন্যটির মধ্যে একটি স্ট্রিংয়ের অবস্থান সন্ধান করছেন এবং আপনি ব্যবহার করছেন strpos()
, এই ফাংশনটি এমন সংখ্যাসূচক অবস্থানটি ফিরিয়ে দেবে যা স্ট্রিংটি খুব প্রথম দিকে পাওয়া গেলে 0 হতে পারে, তবে যদি স্ট্রিংটি খুঁজে পাওয়া যায় না সব, তারপরstrpos()
ফিরে আসবে false
এবং ফলাফলের সাথে ডিল করার সময় আপনার এটিকে বিবেচনায় নিতে হবে ।
যদি আপনি নিজের ফাংশনগুলিতে একই কৌশলটি ব্যবহার করেন তবে স্ট্যান্ডার্ড পিএইচপি লাইব্রেরির সাথে পরিচিত কেউ বুঝতে পারে যে কী চলছে এবং কীভাবে যাচাই করা হবে কীভাবে যাচাই করা উচিত তা প্রসেস করার সময় কিছু ত্রুটি ঘটেছে। একই ফাংশন প্যারামগুলির জন্য একই রকম হয়, আপনি অ্যারে বা স্ট্রিং বা না কী তার উপর নির্ভর করে আপনি তাদের আলাদাভাবে প্রক্রিয়া করতে পারেন এবং এই কৌশলটি পিএইচপি জুড়ে খুব বেশি ব্যবহৃত হয়, তাই প্রত্যেকে এটি বেশ সহজেই পেয়ে যাবে। সুতরাং আমি অনুমান যে শক্তি।
মিথ্যা, নাল, কিছুই নয়, 0, অপরিজ্ঞাত ইত্যাদি
এগুলির প্রত্যেকটির নির্দিষ্ট অর্থ রয়েছে যা প্রকৃত ধারণার সাথে সম্পর্কিত। কখনও কখনও একাধিক অর্থ একক কীওয়ার্ড বা মান দিয়ে ওভারলোড হয়।
ইন সি এবং সি ++ , NULL
, False
এবং 0
একই মান ওভারলোড করা হয়। ইন সি # তারা 3 স্বতন্ত্র ধারণা করছি।
null
বা NULL
সাধারণত মান অভাব নির্দেশ করে, তবে সাধারণত কেন তা নির্দিষ্ট করে না।
0
প্রাকৃতিক সংখ্যা শূন্য নির্দেশ করে এবং 1, 2, 3, ইত্যাদির টাইপ-সমতুল্যতা রয়েছে এবং পৃথক ধারণাগুলি সমর্থন করে এমন ভাষায় NULL
কেবল একটি সংখ্যার সাথে চিকিত্সা করা উচিত।
মিথ্যা অ-সত্য নির্দেশ করে indicates এবং এটি বাইনারি মানগুলিতে ব্যবহৃত হয় । এটি আনসেটের অর্থ নয়, এটির অর্থও নয় 0
। এটি কেবল দুটি বাইনারি মানগুলির মধ্যে একটি নির্দেশ করে।
কোনও কিছুই ইঙ্গিত করতে পারে না যে মানটি নির্দিষ্টভাবে এমন কোনও কিছু হিসাবে সেট করা থাকে যা একই জিনিসটিকে নাল হিসাবে নির্দেশ করে তবে উদ্দেশ্য হিসাবে।
কিছু ভাষায় অপরিবর্তিত ইঙ্গিত দেয় যে মানটি এখনও সেট করা হয়নি কারণ কোনও কোডই প্রকৃত মান নির্দিষ্ট করে নি।
আমি শুধু 1/2 দিনে হয় একটি পেতে চেষ্টা ব্যয় করেছি 0
, null
, false
থেকে ফিরে আসার strops
!
এখানে আমি যা করার চেষ্টা করছিলাম তা এখানে আগেই, আমি দেখতে পেলাম যে পিএইচপি কোডিংয়ে একটি ব্ল্যাকহোল রয়েছে বলে মনে করে যুক্তিটি সঠিক দিকে প্রবাহিত হচ্ছে না:
কনসেপ্ট কোনও সার্ভারে হোস্ট করা একটি ডোমেন নাম গ্রহণ করুন এবং নিশ্চিত করুন যে এটি রুট স্তর নয়, ঠিক আছে এটি করার বিভিন্ন উপায়, তবে আমি অন্যান্য পিএইচপি ফাংশন / কনস্ট্রাক্টগুলির কারণে আমি আলাদা বেছে নিয়েছি।
যাইহোক এখানে আসার ভিত্তি ছিল:
if (strpos($_SERVER ['SERVER_NAME'], dirBaseNAME ())
{
do this
} else {
or that
}
{
echo strpos(mydomain.co.uk, mydomain);
if ( strpos(mydomain, xmas) == null )
{
echo "\n1 is null";
}
if ( (strpos(mydomain.co.uk, mydomain)) == 0 )
{
echo "\n2 is 0";
} else {
echo "\n2 Something is WRONG";
}
if ( (mydomain.co.uk, mydomain)) != 0 )
{
echo "\n3 is 0";
} else {
echo "\n3 it is not 0";
}
if ( (mydomain.co.uk, mydomain)) == null )
{
echo "\n4 is null";
} else {
echo "\n4 Something is WRONG";
}
}
শেষ পর্যন্ত এই বিষয়টি পড়ার পরে, আমি দেখতে পেলাম যে এটি কাজ করেছে !!!
{
if ((mydomain.co.uk, mydomain)) !== false )
{
echo "\n5 is True";
} else {
echo "\n5 is False";
}
}
এই নিবন্ধটির জন্য ধন্যবাদ, আমি এখন বুঝতে পারি যে এটি ক্রিসমাস হলেও এটি ক্রিসমাস হিসাবে নাও হতে পারে false
, যেমন এটি একটি NULL
দিনও হতে পারে !
কিছু সাধারণ কোড ডিবাগ করার দিন নষ্ট করার পরে, আশা করি আমি এটি আগে জানতাম, কারণ আমি কাজটি করার চেষ্টা করার জায়গায় সমস্ত জায়গায় গিয়ে সমস্যাটি চিহ্নিত করতে সক্ষম হয়েছি। তা না কাজ, যেমন False
, NULL
এবং 0
হিসাবে একই সব নয় True or False or NULL
?
থেকে পিএইচপি অনলাইন ডকুমেন্টেশন :
স্পষ্টরূপে কোনও মানকে বুলেয়ানে রূপান্তর করতে, (বুল) বা (বুলিয়ান) কাস্ট ব্যবহার করুন।
তবে বেশিরভাগ ক্ষেত্রে castালাই অনিবার্য, যেহেতু কোনও অপারেটর, ফাংশন বা নিয়ন্ত্রণ কাঠামোর জন্য বুলিয়ান আর্গুমেন্টের প্রয়োজন হয় তবে একটি মান স্বয়ংক্রিয়ভাবে রূপান্তরিত হয়।
বুলিয়ান রূপান্তর করার সময়, নিম্নলিখিত মানগুলি মিথ্যা হিসাবে বিবেচনা করা হয়:
FALSE
নিজেই 0.0
(শূন্য) "0"
NULL
(আনসেট ভেরিয়েবল সহ) TRUE
(কোনও সংস্থান সহ) সুতরাং, বেশিরভাগ ক্ষেত্রে, এটি একই রকম।
অন্যদিকে, এবং ===
এবং ==
একই জিনিস নয়। নিয়মিত, আপনার কেবল "সমান" অপারেটর প্রয়োজন need স্পষ্ট করা:
$a == $b //Equal. TRUE if $a is equal to $b.
$a === $b //Identical. TRUE if $a is equal to $b, and they are of the same type.
আরও তথ্যের জন্য, " তুলনা অপারেটরগুলি পরীক্ষা করুন পিএইচপি অনলাইন ডক্সে " পৃষ্ঠাটি দেখুন
আশাকরি এটা সাহায্য করবে.
এই মানগুলির মধ্যে পার্থক্য সর্বদা বিস্তারিত ভাষা-নির্দিষ্ট নিয়মে নেমে আসে। পিএইচপি-র জন্য আপনি যা শিখছেন তা পাইথন, বা পার্ল, বা সি ইত্যাদির পক্ষে যথাযথভাবে সত্য নয় যদিও আপনি যে ভাষা (ভাষা) নিয়ে কাজ করছেন তার বিধিগুলি শেখার পক্ষে মূল্যবান, যদিও তাদের উপর খুব বেশি ভরসা করা সমস্যার জন্য জিজ্ঞাসা করছে । পরের প্রোগ্রামারটিকে আপনার কোড বজায় রাখতে হবে এবং আপনি এমন কিছু কনস্ট্রাক্ট ব্যবহার করেছেন যা নল বনাম ফ্যালস (উদাহরণস্বরূপ) এর কিছুটা বিশদ বিশ্লেষণের সুবিধা নিয়ে আসে তখন সমস্যাটি আসে। আপনার কোডটি সঠিক দেখা উচিত (এবং বিপরীতে, ভুল কোডটি ভুল দেখতে হবে )।
"নথিভুক্ত" বা "কোনও তথ্য নয়" উপস্থাপন করতে নাল ডাটাবেসগুলিতে ব্যবহৃত হয়। সুতরাং আপনার কাছে একটি বিট ক্ষেত্র থাকতে পারে যা "এই ব্যবহারকারী কী আমাদের দ্বারা ই-মেইল প্রেরণ করতে চায়" বর্ণনা করে, যেখানে সত্যিকারের অর্থ তারা করে, মিথ্যা অর্থ তারা কিছুই প্রেরণ করতে চায় না, তবে নুলের অর্থ আপনি ডন না ' জানি না তারা বাইরের যোগদান এবং এই জাতীয় অনুরূপ মাধ্যমে প্রায় আসতে পারে।
নুলের যৌক্তিক প্রভাবগুলি প্রায়শই পৃথক হয় - কিছু ভাষায় NULL কোনও কিছুর সমান হয় না, তাই যদি (a == NULL) সর্বদা মিথ্যা থাকে।
সুতরাং ব্যক্তিগতভাবে আমি সর্বদা মিথ্যাতে একটি বুলিয়ান শুরু করতাম এবং একটিকে NULL প্রারম্ভিক করানো কিছুটা আড়ম্বরপূর্ণ দেখত (এমনকি সি যেখানে দুজনেই কেবল 0 ... কেবল একটি স্টাইলের জিনিস)।
আমি মনে করি খারাপ বিকাশকারীরা সেখানে কোডে নাল / 0 / টির সমস্ত বিভিন্ন ব্যবহার খুঁজে পান।
উদাহরণস্বরূপ, বিকাশকারীরা সবচেয়ে সাধারণ ভুলগুলির মধ্যে একটি হ'ল কোনও ফাংশন সহ ডেটা আকারে ত্রুটি কোডটি ফেরত দেওয়া।
// On error GetChar returns -1
int GetChar()
এটি একটি চিনির ইন্টারফেসের একটি উদাহরণ। এটি "সফ্টওয়্যার বিকাশ প্রসেস ডিবাগিং" বইয়ে এবং অন্য একটি বইতে "সঠিক কোড লেখার" ক্ষেত্রে ব্যাখ্যা করা হয়েছে।
এটির সাথে সমস্যাটি হ'ল চরের ধরণের উপর জড়িত বা অনুমান। কিছু সংকলকগুলিতে চর প্রকারটি স্বাক্ষরিত হতে পারে। সুতরাং আপনি একটি -1 ফিরিয়ে দিলেও সংকলক পরিবর্তে 1 ফিরে আসতে পারে। সি ++ বা সি-তে এই ধরণের সংকলক অনুমানগুলি খুঁজে পাওয়া শক্ত।
পরিবর্তে, সর্বোত্তম উপায় হ'ল আপনার ডেটার সাথে ত্রুটি কোডটি মেশানো নয়। সুতরাং নিম্নলিখিত ফাংশন।
char GetChar()
এখন হয়ে যায়
// On success return 1
// on failure return 0
bool GetChar(int &char)
এর অর্থ হ'ল বিকাশকারী আপনার বিকাশের দোকানে যতই তরুণ হোক না কেন, সে কখনই এই ভুল পাবে না। যদিও এটি অনর্থক সম্পর্কে কথা বলছে না বা কোডের উপর নির্ভর করে।
সুতরাং সাধারণভাবে, ভাষার প্রথম শ্রেণীর ধরণ হিসাবে বুল সোয়েপ করা ঠিক আছে এবং আমি মনে করি জোয়েল তার সাম্প্রতিক পোস্টকাস্টের সাথে এটি সম্পর্কে কথা বলেছেন। তবে আপনার রুটিনগুলিতে আপনার ডেটার সাথে মিক্স এবং বুলগুলি মিল না দেওয়ার চেষ্টা করুন এবং আপনার পুরোপুরি ভাল হওয়া উচিত।
পিএইচপি-তে এটি নির্ভর করে যে আপনি প্রকারের বৈধতা যাচ্ছেন:
(
( false !== 0 ) && ( false !== -1 ) && ( false == 0 ) && ( false == -1 ) &&
( false !== null ) && ( false == null )
)
প্রযুক্তিগতভাবে নাল 0x00
কিন্তু পিএইচপি( null == 0x00 ) && ( null !== 0x00 )
।
0
একটি পূর্ণসংখ্যা মান।
NULL
পিএইচপি-র সম্পর্কে একটি আকর্ষণীয় তথ্য : আপনি যদি কোনও সমান ভার সেট NULL
করেন তবে এটি অনুরূপ যেমন আপনি unset()
এটিতে আহ্বান করেছিলেন।
NULL
মূলত একটি ভেরিয়েবলের কোনও মূল্য নির্ধারিত হয় না; false
একটি বৈধ বুলিয়ান মান, 0
একটি বৈধ পূর্ণসংখ্যা মান, এবং পিএইচপি মধ্যে কিছু মোটামুটি কুশ্রী ধর্মান্তর হয়েছে 0
, "0"
, ""
, এবং false
।
নাল কিছুই নয়, মিথ্যাটি কিছুটা, এবং 0 (সম্ভবত) 32 বিট।
পিএইচপি বিশেষজ্ঞ নয়, আরও কয়েকটি আধুনিক ভাষায় সেগুলি বিনিময়যোগ্য নয়। আমি 0 এবং মিসের মিথ্যাকে আদান-প্রদানের যোগ্য হতে চাই তবে বুলিয়ান আসল ধরণের হওয়ার সাথে আপনি এর সাথে যুক্ত পদ্ধতি এবং অবজেক্টগুলি রাখতে পারেন যাতে এটি কেবল একটি ট্রেড অফ। নাল যদিও নাল, মূলত কোনও কিছুর অনুপস্থিতি।
ঠিক আছে, আমি আমার পিএইচপি এর দিনগুলি থেকে "===" অংশটির উত্তর দিতে যথেষ্ট মনে করতে পারি না, তবে বেশিরভাগ সি-স্টাইলের ভাষার জন্য, NUL পয়েন্টার মানগুলির প্রসঙ্গে, বুলিয়ান হিসাবে মিথ্যা এবং শূন্য হিসাবে ব্যবহার করা উচিত সংখ্যার মান যেমন একটি int। '\ 0' হ'ল একটি চরিত্রের প্রসঙ্গে cust আমি সাধারণত ফ্লোট এবং ডাবলসের জন্য 0.0 ব্যবহার করতে পছন্দ করি।
সুতরাং .. দ্রুত উত্তর: প্রসঙ্গ।
প্রায় সমস্ত আধুনিক ভাষায়, যুক্তিযুক্তভাবে বাতিল পয়েন্টারগুলিকে (বা রেফারেন্সগুলি) উল্লেখ করে যার কোনও মান না থাকে, বা কোনও ভেরিয়েবল যা আরম্ভ হয় না। 0 হল শূন্যের পূর্ণসংখ্যা মান এবং মিথ্যা হ'ল বুলিয়ান মান, ভাল, মিথ্যা। জিনিসগুলিকে জটিল করার জন্য, সিতে, উদাহরণস্বরূপ, নাল, 0 এবং মিথ্যা সমস্ত একইভাবে উপস্থাপিত হয়। আমি জানি না যে এটি পিএইচপি-তে কীভাবে কাজ করে।
তারপরে, জিনিসগুলিকে আরও জটিল করার জন্য, ডাটাবেসে নাল ধারণাটি ধারণ করে, যার অর্থ নিখোঁজ বা প্রযোজ্য নয় এবং বেশিরভাগ ভাষার কাছে কোনও ডিবিএনল ম্যাপ করার সরাসরি উপায় নেই। সম্প্রতি অবধি, উদাহরণস্বরূপ, কোনও শূন্য হওয়া এবং শূন্য হওয়ার মধ্যে কোনও পার্থক্য ছিল না, তবে এটি নল যুক্তগুলির সাথে পরিবর্তন করা হয়েছিল।
এই শব্দটিকে জটিল করার জন্য দুঃখিত এটি ঠিক যে এটি বছরের পর বছর ধরে ভাষাগুলিতে একটি হ্যারি স্টিকিং পয়েন্ট ছিল এবং সম্প্রতি অবধি এটি এর কোথাও কোনও সুস্পষ্ট সমাধান হয়নি। লোকেরা কেবল জিনিসগুলিকে একসাথে কুঁচকে বা ফাঁকা তৈরি করতে ব্যবহার করত বা 0 টি ডাটাবেসে শূন্য উপস্থাপন করে যা সবসময় খুব ভাল কাজ করে না।
মিথ্যা এবং 0 টি ধারণাগতভাবে সমান, অর্থাত্ এগুলি isomorphic। 0 হ'ল প্রাকৃতিক সংখ্যার বীজগণিতের প্রাথমিক মান এবং মিথ্যা বুলিয়ান বীজগণিতের জন্য প্রাথমিক মান।
অন্য কথায়, 0 টি এমন সংখ্যার হিসাবে সংজ্ঞায়িত করা যেতে পারে যা কিছু প্রাকৃতিক সংখ্যায় যুক্ত হলে একই সংখ্যাটি দেয়:
x + 0 = x
একইভাবে, মিথ্যা একটি মান এমন যে এটির বিভাজন এবং অন্য কোনও মান একই মান:
x || False = x
নাল ধারণাগতভাবে সম্পূর্ণ ভিন্ন কিছু। ভাষার উপর নির্ভর করে এর জন্য বিভিন্ন শব্দার্থবিজ্ঞান রয়েছে, তবে এগুলির কোনওটিই "প্রাথমিক মান" কে মিথ্যা এবং 0 হিসাবে বর্ণনা করে না। নলের জন্য কোনও বীজগণিত নেই। এটি ভেরিয়েবলের সাথে সম্পর্কিত, সাধারণত বোঝাতে যে চলকটির বর্তমান প্রসঙ্গে কোনও নির্দিষ্ট মান নেই। বেশিরভাগ ভাষায় নূলে কোনও ক্রিয়াকলাপ সংজ্ঞায়িত করা হয় না এবং নুলকে অপারেন্ড হিসাবে ব্যবহার করা ত্রুটি। কিছু ভাষায়, "নাল" না দিয়ে "নীচ" নামে একটি বিশেষ মান রয়েছে যা সমাপ্তি না করে এমন একটি গণনার মানের জন্য স্থানধারক।
কেউ আমাকে ব্যাখ্যা করতে পারেন কেন 'তুলনামূলক' তুলনামূলক উদাহরণ হিসাবে কেবল স্ট্রিং নয়?
$x = 0;
var_dump($x == 'NULL'); # TRUE !!!WTF!!!
php > var_dump((int) "NULL"); // => int(0)
php > var_dump((int) "BLA"); // => int(0)
php.net/manual/en/language.operators.compistance.php দেখুন স্ট্রিং এবং সংখ্যায় স্বাভাবিক গণিত অনুবাদ করুন
মিথ্যাচারের সমস্যাগুলি পিএইচপি ইতিহাস থেকে আসে। সমস্যাটি সঠিকভাবে সংজ্ঞায়িত স্কেলারের ধরণকে লক্ষ্য করে না।
'*' == true -> true (string match)
'*' === true -> false (numberic match)
(int)'*' == true -> false
(string)'*' == true -> true
পিএইচপি 7 কঠোরতা একটি পদক্ষেপ এগিয়ে, তবে সম্ভবত যথেষ্ট নয়। https://web-techno.net/typing-with-php-7-what-you-shouldnt-do/
null
এবং কখন ব্যবহার করবেন তা গুরুত্বপূর্ণfalse
। আমি ব্যবহার পছন্দnull
যখন একটি পদ্ধতি থেকে একটি মান পুনরুদ্ধার, কারন আমি ব্যবহার করতে পারেনisset
তা নির্ধারণ করতে একটি মান পরিবর্তে ব্যবহার করার ফিরিয়ে দেওয়া হয় কিনাempty
যা অ্যাকাউন্ট নেবে না:false
,0
,'0'
অথবা একটি খালি স্ট্রিং অনেক পরিস্থিতিতে টেকসই মান হতে পারে। আমার কাছে এটি একটি অগোছালো নির্মাণের সবচেয়ে পরিষ্কার সমাধান est