পিএইচপি-তে, 0 টি কি খালি হিসাবে গণ্য করা হয়?


143

কোড আরও ব্যাখ্যা করবে:

$var = 0;

if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}

ফলাফল "এটি খালি" ফেরত দেয়। আমি ভেবেছিলাম খালি () আমি ইতিমধ্যে ভেরিয়েবলটি সেট করে রেখেছি এবং এর ভিতরে মান আছে কিনা তা পরীক্ষা করবে। কেন এটি "এটি খালি" ফেরায় ??


15
@ স্টেরিও emptyসম্ভবত সবচেয়ে কার্যকর তবে বিস্তৃত ভুল বোঝানো পিএইচপি ফাংশন। কীভাবে এবং কখন এটি ব্যবহার করবেন তা শিখুন।
ছদ্মবেশ দিন

2
@ স্টেরিও emptyজন্য মূলত সংক্ষিপ্ত isset($var) && $var != falseemptyএটিকে দিয়ে নিজেকে পায়ে আটকানোর জন্য আপনাকে অবশ্যই খুব অদ্ভুতভাবে ধরে রাখতে হবে । ; পি
ছদ্মবেশ

@ স্টেরিও 1) এটি "অসামঞ্জস্য" কোথায়? এটি টিনের মতো বলে কাজ করে। 2) আলগাভাবে falseএকটি "অপরিবর্তিত ভেরিয়েবল" ত্রুটিটি ট্রিগার না করে কোনও ভেরিয়েবলের সাথে তুলনা করা কি বেহুদা? ওহ ভাল, অনুমান করুন আপনি এটি কখনও করেন না ... 3) সুরক্ষা প্রসঙ্গে ভুল ফাংশনটি বেছে নেওয়ার অর্থ এই নয় যে ফাংশনটি নিজেই খারাপ, অকেজো বা বেমানান; এর অর্থ এই যে কেউ এই কাজের জন্য ভুল ফাংশনটি বেছে নিয়েছে।
ছদ্মবেশ


18
@ নির্ধারণ করুন - যদি কোনও ফাংশনটির মতো এত বিস্তৃত ভুল বোঝা যায় empty()তবে সম্ভবত এটির ভুল নাম রয়েছে।
মার্টিনস্টোকেলি

উত্তর:


189

http://php.net/empty

নিম্নলিখিত জিনিসগুলি খালি মনে করা হয়:

  • "" (একটি খালি স্ট্রিং)
  • 0 (0 পূর্ণসংখ্যা হিসাবে)
  • 0.0 (একটি ফ্লোট হিসাবে 0)
  • "0" (0 টি স্ট্রিং হিসাবে)
  • খালি
  • মিথ্যা
  • অ্যারে () (একটি ফাঁকা অ্যারে)
  • var $ var; (একটি ভেরিয়েবল ঘোষিত, তবে শ্রেণিতে মান ছাড়াই)

নোট করুন যে এটি বুলিয়ানকে জোর করার জন্য ঠিক একই তালিকা falseemptyসহজভাবে !isset($var) || !$varissetপরিবর্তে চেষ্টা করুন।


সুতরাং, আমাকে অবশ্যই এটি পরীক্ষা করতে হবে: যদি (isset ($ var) && $ var! = 0) Some কিছু করুন} ??
mysqllearner

1
@ এমএসকিউএল এই ক্ষেত্রে আপনি সম্ভবত ব্যবহার করতে পারেন !empty($var)তবে মনে রাখবেন যে আপনি যে প্রশ্নে লিখেছেন সেটি একই নয়। কোনটি ব্যবহার করবেন তা সম্পূর্ণ নির্ভর করে আপনি কোন মানগুলি বিবেচনা করতে চান তার উপর true। এর মধ্যে পার্থক্যগুলি কেবল তুলনা করুন issetএবং emptyসঠিক পরিস্থিতির জন্য সঠিক সংমিশ্রণটি চয়ন করুন।
ছদ্মবেশ

7
@ এমএসকিউ্লায়ার্নার: যদি issetফেরত দেয় । তবে আপনি যা বোঝাতে চেয়েছেন তা হ'লTrue$var=0if(isset($var) && $var != 0)empty
ফেলিক্স ক্লিং

@ মিস্কু্ল্লিয়ারার সেটটি খালি না থাকলে সনাক্ত করে। এটি খালি আছে কিনা তা পরীক্ষা করতে, পরিবর্তে isset ব্যবহার করুন।

1
@ দেজি যেহেতু পিএইচপি-র একটি ওয়েব ভাষা হিসাবে শিকড় রয়েছে এবং এইচটিটিপি অনুরোধের মানগুলি সর্বদা স্ট্রিং থাকে, '0'সমতুল্য হিসাবে বিবেচিত হয় 0। এটি পিএইচপি এর মূল নকশা দর্শন। আমি একমত যে এটি একটি অত্যন্ত বিতর্কিত পছন্দ, তবে, আমি আপনার সাথে সেই পছন্দটি নিয়ে বিতর্ক করতে আসছি না। পিএইচপি-র যুক্তির মধ্যে, বিয়োগ বিজ্ঞপ্তির emptyসমতুল্য == falseআইএমও। পিএইচপি-তে কিছু বিষয়গুলির চেয়ে আলাদা হওয়া উচিত যা আলাদা বিষয়।
ছদ্মবেশ

76

আমি ভাবছিলাম যে কেন কেউ চূড়ান্ত কার্যকর টাইপ তুলনা সারণির পরামর্শ দেয় না । এটি সাধারণ ফাংশন এবং অপারেটরদের তুলনা সম্পর্কে প্রতিটি প্রশ্নের উত্তর দেয়।

একটি স্নিপেট:

Expression      | empty($x)
----------------+--------
$x = "";        | true    
$x = null       | true    
var $x;         | true    
$x is undefined | true    
$x = array();   | true    
$x = false;     | true    
$x = true;      | false   
$x = 1;         | false   
$x = 42;        | false   
$x = 0;         | true    
$x = -1;        | false   
$x = "1";       | false   
$x = "0";       | true    
$x = "-1";      | false   
$x = "php";     | false   
$x = "true";    | false   
$x = "false";   | false   

অন্যান্য চিটশিটের পাশাপাশি আমি নিশ্চিত না হলে আমি সবসময় এই টেবিলের একটি হার্ডকপি আমার ডেস্কে রাখি


2
আপনার চিট শীটটি এখনই আপডেট করা উচিত আমি আপনাকে আরও কিছু দিব ... 0.0 = সত্য, 0.00 = সত্য, "0.0" = মিথ্যা
সৈয়দ মোহাম্মদ আলী

34

সংখ্যার মানগুলির ক্ষেত্রে আপনার_সংখ্যার ফাংশনটি ব্যবহার করা উচিত:

$var = 0;

if (is_numeric($var))
{
  echo "Its not empty";
} 
else 
{
    echo "Its empty";
}

1
'0' বা 0

12

strlen()পরিবর্তে ব্যবহার করুন। কিছু ভেরিয়েবলের জন্য সম্ভাব্য মান হিসাবে 1/0 ব্যবহার করে আমি একই ইস্যুটিতে ছুটলাম। আমি if (strlen($_POST['myValue']) == 0)আমার ভেরিয়েবলের কোনও অক্ষর আছে কিনা তা পরীক্ষা করতে ব্যবহার করছি ।


ত্রুটি লগ বাদ দিতে কেবল একটি @স্ট্রেলন যুক্ত করুন, কেবলমাত্র ... একটি বড় লগ তৈরি না করার জন্য
মিগুয়েল

আপনি কেন রাখবেন @strlen। যতক্ষণ আপনি কোনও ভেরিয়েবল পাস করেন ততক্ষণ এটিকে ত্রুটি আউট করা উচিত নয়। যদি আপনার
স্ট্রেন

2
যদি ভেরিয়েবলটি সেট না করা হয় তবে আমি বিশ্বাস করি আপনি একটি ত্রুটি পাবেন।
এভরেন ইয়ুর্তেসেন

11

আমি সম্প্রতি আমার প্যান্টের সাথে এটির উপরেও পড়েছিলাম। আমরা প্রায়শই যে সমস্যাটি মোকাবিলা করি তা হ'ল আনসেট ভেরিয়েবল - এমন একটি ফর্ম উপাদান বলুন যা সেখানে থাকতে পারে বা নাও হতে পারে তবে অনেক উপাদানগুলির জন্য, 0(বা স্ট্রিং)'0' পোস্টের মাধ্যমে আরও সঠিকভাবে আসতে পারে তবে এখনও "মিথ্যা" হিসাবে মূল্যায়ন করা হবে ) একটি ড্রপডাউন তালিকার একটি বৈধ মান।

ব্যবহার empty()প্রথম এবং তারপর strlen()আপনার সেরা সেরা আপনি ভাল হিসাবে এই প্রয়োজন হয়, যেমন:

if(!empty($var) && strlen($var)){
    echo '"$var" is present and has a non-falsey value!';
}

6

ভাষাগত দৃষ্টিকোণ থেকে খালি একটি মূল্যহীন একটি অর্থ আছে । অন্যদের মতো বলেছেন যে আপনাকে isset()কোনও ভেরিয়েবল সংজ্ঞায়িত করা হয়েছে কিনা তা যাচাই করার জন্য আপনাকে ব্যবহার করতে হবে , যা আপনি করছেন।


1
এই সহজ উত্তরটি আমাকে স্বাচ্ছন্দ্যের সাথে একটি 0বনাম nullসমস্যাটি পরিষ্কার করতে সহায়তা করেছে । ধন্যবাদ!
গিয়াকোম 1968

4

empty()যা যা মূল্যায়ণ করে তার জন্য সত্য প্রত্যাবর্তন করে FALSE, এটি আসলে !ছদ্মবেশে একটি 'নয়' ( )। আমি মনে করি আপনি বোঝাতে চেয়েছিলেনisset()


4

চলক ব্যবহারের মান হিসাবে 0 গ্রহণ করতে isset

ভেরিয়েবলটি খালি আছে কিনা তা পরীক্ষা করে দেখুন

$var = 0;

if ($var == '') {
    echo "empty";
} else {
    echo "not empty"; 
}
//output is empty

ভেরিয়েবল সেট করা আছে কিনা তা পরীক্ষা করুন

$var = 0;

if (isset($var)) {
    echo "not empty";
} else {    
    echo "empty";
}
//output is not empty


1

নিম্নলিখিত জিনিসগুলি খালি মনে করা হয়:

  • "" (একটি খালি স্ট্রিং)
  • 0 (0 পূর্ণসংখ্যা হিসাবে)
  • "0" (0 টি স্ট্রিং হিসাবে)
  • খালি
  • মিথ্যা
  • অ্যারে () (একটি ফাঁকা অ্যারে)
  • var $ var; (একটি ভেরিয়েবল ঘোষিত, তবে শ্রেণিতে মান ছাড়াই)

পিএইচপি ম্যানুয়াল থেকে

আপনার কেস $varহয় 0, তাই empty($var)ফিরে আসবে true, আপনি এটি পরীক্ষা সামনে ফলাফলের অস্বীকার করছে, তাই অন্য ব্লক দান "চালানো হবে Its emptyআউটপুট"।


1

ম্যানুয়াল থেকে: ভের যদি শূন্য এবং শূন্য-না মান হয় তবে FALSE প্রদান করে।

নিম্নলিখিত জিনিসগুলি খালি মনে করা হয়:

  • "" (একটি খালি স্ট্রিং)
  • 0 (0 পূর্ণসংখ্যা হিসাবে)
  • "0" (0 টি স্ট্রিং হিসাবে) NULL
  • মিথ্যা অ্যারে () (একটি খালি অ্যারে) ভ্যার
  • Var $; (একটি ভেরিয়েবল ঘোষিত, তবে শ্রেণিতে মান ছাড়াই)

আরও: http://php.net/manual/en/function.empty.php


1
if (empty($var) && $pieces[$var] != '0') {
//do something
}

আমার ক্ষেত্রে এই কোডটি কাজ করেছিল।


0

আসলে isset কেবল ভেরিয়েবল সেট করে কিনা তা পরীক্ষা করে দেখুন this এই ক্ষেত্রে যদি আপনার ভেরিয়েবলটি সত্যিই শূন্য বা খালি হয় তা পরীক্ষা করতে চান তবে আপনি এই উদাহরণটি ব্যবহার করতে পারেন:

$myVar = '';
if (empty($myVar))
{
  echo "Its empty";
}
echo "<br/>";

if ($myVar===0)
{
  echo "also zero!";
}

কেবলমাত্র বিজ্ঞপ্তির জন্য $ myVar == 0 খালি ফাংশনের মতো কাজ করুন।


0

খালি মানে ফাঁকা হওয়া উচিত .. যাই হোক না কেন মিথ্যা বলুন।

যখন আমি করি

$var = '';    
$var = '0';

আমি প্রত্যাশা করি যে var_dump(empty($var));মিথ্যা ফিরে আসবে।

আপনি যদি অ্যারেতে জিনিসগুলি পরীক্ষা করে থাকেন তবে আপনাকে সর্বদা isset($var)প্রথমে করতে হবে ।


0

কেবল 0 এর ($_POST['input_field_name'])!=0পরিবর্তে !($_POST['input_field_name'])==0ব্যবহার করা খালি হিসাবে বিবেচিত হবে না।


0

এখনও কোনও ব্যাখ্যা এবং সমাধানের সন্ধানের জন্য লোক রয়েছে কিনা তা নিশ্চিত নয়। উপরের মন্তব্যগুলি এগুলি সবই সত্য / মিথ্যা / ১ / ০ এর মধ্যে পার্থক্য নিয়ে বলেছে
আমি আসল মানটি প্রদর্শন করার জন্য আমার 2 সেন্টটি আনতে চাই।

বুলিয়ান

আপনি যদি বুলিয়ান ডেটাটাইপ নিয়ে কাজ করছেন তবে আপনি সত্য বনাম ফলস ফলাফল খুঁজছেন; আপনি যদি এটি মাইএসকিউএল এ সঞ্চয় করেন তবে এটি 1 শ্রেনী হিসাবে সংরক্ষণ করা হবে। 0 (যদি আমি ভুল করছি না তবে এটি আপনার সার্ভারের স্মৃতিতে একই)।

সুতরাং পিএইচপি-তে মানটি প্রদর্শনের জন্য আপনাকে এটি সত্য (1) বা মিথ্যা (0) কিনা তা যাচাই করতে হবে এবং আপনি যা চান তা প্রদর্শন করতে হবে: "সত্য" বা "মিথ্যা" বা সম্ভবত "1" বা "0"।
মনোযোগ দিন, 0 এর চেয়ে বড় (বা আলাদা) সমস্ত কিছুই পিএইচপি-তে সত্য হিসাবে বিবেচিত হবে। উদাহরণস্বরূপ: 2, "এবিসি" ইত্যাদি সমস্ত সত্য প্রদান করবে।

বিট, টিনআইএনটি

আপনি যদি একটি নম্বর ডেটাটাইপ দিয়ে কাজ করছেন তবে এটি যেভাবে সংরক্ষণ করা হবে তা একই।
মানটি প্রদর্শনের জন্য, আপনাকে পিএইচপি বলতে হবে এটি একটি সংখ্যা হিসাবে পরিচালনা করতে। সবচেয়ে সহজ উপায়টি আমি খুঁজে পেয়েছি এটি 1 দ্বারা গুণ করা।


0

সঠিক উদাহরণ। ডাটাবেসে কেবল ইনট টাইপ ফিল্ড (উদাহরণস্বরূপ মোবাইল নম্বর) তৈরি করুন এবং একটি ফর্মের মাধ্যমে নিম্নলিখিত ডাটাবেসের জন্য একটি ফাঁকা মান জমা দিন বা এসকিউএল ব্যবহার করে সন্নিবেশ করুন। এটি ডাটাবেস 0 এ কী সংরক্ষণ হবে কারণ এটি প্রকার টাইপ এবং ফাঁকা বা নাল হিসাবে সংরক্ষণ করা যায় না। সুতরাং এটি খালি তবে এটি 0 হিসাবে সংরক্ষণ করা হবে তাই আপনি যখন পিএইচপি এর মাধ্যমে ডেটা আনবেন এবং খালি মানগুলি পরীক্ষা করবেন check এটি খুব দরকারী এবং যুক্তিযুক্তভাবে সঠিক।

0.00, 0.000, 0.0000 .... 0.0 ... 0 এছাড়াও ফাঁকা এবং উপরের উদাহরণটি ভাসা, ডাবল, দশমিক (দশমিকের বিভিন্ন ধরণের 0.000 এবং এর মতো বিভিন্ন ডাটাবেসে বিভিন্ন ধরণের মান সংরক্ষণ করার জন্য ব্যবহার করা যেতে পারে।


0

মান সেট করা আছে কি না তা পরীক্ষা করতে আপনাকে isset () ব্যবহার করতে হবে।


হাই @ ভার্সেট্টি, স্ট্যাক ওভারফ্লোতে আপনাকে স্বাগতম। আপনার উত্তর দেওয়ার জন্য ধন্যবাদ তবে এটি বিদ্যমান, আরও বিস্তারিত উত্তরগুলির চেয়ে নতুন কিছু যুক্ত করবে বলে মনে হচ্ছে না। হয় উত্তরটি উত্তর যুক্ত করতে যুক্ত করুন যা অন্যান্য উত্তর থেকে অনুপস্থিত রয়েছে বা আপনার উত্তরটি নতুন কিছু যুক্ত না করে মুছে ফেলার বিষয়টি বিবেচনা করুন।
গ্রিসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.