isset () এবং খালি () - কী ব্যবহার করবেন


105

আপনি আমার কোডিং শৈলীর উন্নতি করতে আমাকে সাহায্য করতে পারেন? :) কিছু কার্যে আমাকে যাচাই করা দরকার - পরিবর্তনশীল খালি বা এতে কিছু রয়েছে। এই কাজটি সমাধান করার জন্য, আমি সাধারণত নিম্নলিখিতগুলি করি।

চেক - এই পরিবর্তনশীল সেট না হয়? যদি এটি সেট থাকে - আমি পরীক্ষা করে দেখি - এটি খালি নাকি না?

<?php
    $var = '23';
    if (isset($var)&&!empty($var)){
        echo 'not empty';
    }else{
        echo 'is not set or empty';
    }
?>

এবং আমার একটি প্রশ্ন আছে - আমি খালি () এর আগে ইসসেট () ব্যবহার করা উচিত - এটি কি প্রয়োজনীয়? টিয়া!


খালি হয়! isset ($ var) || $ var == মিথ্যা
zloctb

2
আমার বিপরীতে খালি () পিএইচপি-র একটি ভয়াবহ বিকাশ। এটি "খালি" হিসাবে কোনও ফর্মের "0" বিবেচনা করে আপনি প্রচুর ডিবাগিং সময় ব্যয় করে খারাপ ফাঁদে পড়তে পারেন। আমি বলব: যে কোনও মূল্যে এড়াতে এবং কেবল যুক্তিটি নিজে লিখুন
জন

উত্তর:


143

এটি আপনি যা সন্ধান করছেন তা নির্ভর করে, আপনি যদি খালি এটি খালি খালি দেখতে চান তবে emptyএটি যেমন সেট করা হয়েছে কিনা তা পরীক্ষা করে দেখুন, যদি আপনি কিছু সেট করা আছে কি না ব্যবহার করতে চান তা জানতে চান isset

Empty ভেরিয়েবল সেট করা আছে কিনা তা পরীক্ষা করে যদি এটি হয় তবে এটি নাল, "", 0 ইত্যাদি ইত্যাদির জন্য চেক করে

Isset এটি সেট করা আছে কিনা তা পরীক্ষা করে দেখুন, এটি শূন্য নয় এমন কিছু হতে পারে

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

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

Http://php.net/manual/en/function.empty.php থেকে


মন্তব্যে উল্লিখিত হিসাবে খালি () সহ সতর্কতার অভাবও গুরুত্বপূর্ণ

পিএইচপি ম্যানুয়াল বলেছেন

খালি () হ'ল (বুলিয়ান) ভের বিপরীত, যখন ভেরিয়েবলটি সেট না করা হয় তখন কোনও সতর্কতা তৈরি হয় না

আইসেট সম্পর্কিত

পিএইচপি ম্যানুয়াল বলেছেন

isset () নুআলএল সেট করা হয়েছে এমন একটি ভেরিয়েবলের পরীক্ষা করে যদি মিথ্যা প্রত্যাবর্তন করে


আপনার কোড হিসাবে ভাল হবে:

<?php
    $var = '23';
    if (!empty($var)){
        echo 'not empty';
    }else{
        echo 'is not set or empty';
    }
?>

উদাহরণ স্বরূপ:

$var = "";

if(empty($var)) // true because "" is considered empty
 {...}
if(isset($var)) //true because var is set 
 {...}

if(empty($otherVar)) //true because $otherVar is null
 {...}
if(isset($otherVar)) //false because $otherVar is not set 
 {...}

এর অর্থ - উপরের কোডে আমি যাচাই করেছিলাম পরিবর্তনশীল সেটটি নাকি দুটিবার নয়? :)
দিমিত্রি বেলভেন্টেভ

খালি কিনা তা খতিয়ে দেখুন, পিএইচপি যদি সমস্যা না থাকে তবে কোনও ত্রুটি ফেলবে না।
পেজ ককো

3
আপনি এর বৃহত্তম বিন্দুটি বাদ দিচ্ছেন empty: পরীক্ষিত ভেরিয়েবলটি উপস্থিত না থাকলে এটি কোনও সতর্কতা ছুঁড়ে না। এটি এই ফাংশনের পুরো পয়েন্ট, অন্যথায় এটি অভিন্ন == false
প্রতারণা করুন

1
সুতরাং, ম্যানুয়ালটিতে সত্য যে "যখন ভেরিয়েবলটি সেট না করা হয় তখন কোনও সতর্কতা উত্পন্ন হয় না" আমাকে বিভ্রান্ত করে। কোনও সতর্কতার অর্থ এই নয় যে নীচের কোডটিতে আমার কোনও সমস্যা হবে না। এখন এটা আমার জন্য পরিষ্কার। অনেক ধন্যবাদ!
দিমিত্রি বেলভেন্টেভ

"এই সেটটি সেট করা আছে কিনা তা পরীক্ষা করে দেখায়, এটি এখনও বাতিল হতে পারে" এটি সত্য নয়: issetএকটি নাল (এবং বিদ্যমান) ভেরিয়েবলের জন্য মূল্যায়ন করবে false
নেটকোডার

12

আপনার নির্দিষ্ট ক্ষেত্রে ইন: if ($var)

আপনার issetযদি ভেরিয়েবলটি বিদ্যমান কি না তা জানেন না তবে আপনাকে ব্যবহার করতে হবে । যেহেতু আপনি এটি একেবারে প্রথম লাইনে ঘোষণা করেছেন, আপনি জানেন যে এটি বিদ্যমান, সুতরাং আপনার প্রয়োজন হবে না, এটি ব্যবহার করা উচিত নয়isset

একই জন্য emptyএটি শুধুমাত্র মান সত্যতাempty জন্য একটি চেক একত্রিত করে। সমান এবং সমতুল্য , বা ।empty!isset($var) || !$var!emptyisset($var) && $varisset($var) && $var == true

আপনি শুধুমাত্র একটি পরিবর্তনশীল যে পরীক্ষা করতে চান, এখোনো জন্য truthiness , if ($var)পুরোপুরি পর্যাপ্ত এবং বিন্দু হয়।


এটি একটি আরও অনেক ভাল ব্যাখ্যা। আমরা যদি এইরকম অন্যান্য সমস্ত ক্ষেত্রে তুলনা পাই !empty is equivalent to isset($var) && $var, তবে এটি দুর্দান্ত। ধন্যবাদ @ ডেসিজে
ভিয়ার

6

আপনি খালি () ব্যবহার করতে পারেন - ডকুমেন্টেশনে যেমন দেখা যায় , ভেরিয়েবলের কোনও মান না থাকলে এটি মিথ্যা ফিরবে।

একই পৃষ্ঠায় একটি উদাহরণ:

<?php
$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

// Evaluates as true because $var is set
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>

আপনি যদি এটি কেবল নুল না হয় তা জানতে চাইলে আপনি এসেট ব্যবহার করতে পারেন। অন্যথায় এটি খালি মনে হয় () একা ব্যবহার করা ঠিক is


ডাউন ভোটের ব্যাখ্যা? তিনি জিজ্ঞাসা করছেন না যে তারা একই কিনা, তিনি জিজ্ঞাসা করছেন যে খালি চেক করার আগে তাকে আইসেট চেক করা দরকার কিনা।
ক্রিস

আমি downvote করিনি, কিন্তু সঠিক নয় "ব্যবহার isset আপনি এটা নাল নয় জানতে চান": $var = null; isset( $var ) == true
জেজেজে

পিএইচপি 5/4 ​​ম্যানুয়াল থেকে: isset () - "যদি কোনও ভেরিয়েবল সেট করা থাকে এবং NULL না হয় তা নির্ধারণ করুন" " us.php.net/manual/en/function.isset.php
ক্রিস

2

এখানে আউটপুটের হয় isset()এবং empty()অঘোষিত, নাল, মিথ্যা এবং সত্য: 4 সম্ভাবনার জন্য।

$a=null;
$b=false;
$c=true;

var_dump(array(isset($z1),isset($a),isset($b),isset($c)),true); //$z1 previously undeclared
var_dump(array(empty($z2),empty($a),empty($b),empty($c)),true); //$z2 previously undeclared

//array(4) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(true) [3]=> bool(true) } 
//array(4) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(true) [3]=> bool(false) } 

আপনি লক্ষ্য করবেন যে সমস্ত 'ইসসেট' ফলাফল কেস ব্যতীত 'খালি' ফলাফলের বিপরীতে $b=false। সমস্ত মান (নাল ব্যতীত যা একটি মান নয় তবে একটি অ-মান নয়) যেটি মিথ্যাতে মূল্যায়ন করে তা দ্বারা পরীক্ষিত হলে সত্য হবেisset খালি দ্বারা পরীক্ষিত হয় এবং মিথ্যা ।

সুতরাং isset()আপনি যখন ভেরিয়েবলের অস্তিত্ব সম্পর্কে উদ্বিগ্ন হন তখন ব্যবহার করুন । emptyআপনি যখন সত্য বা মিথ্যা পরীক্ষা করছেন তখন ব্যবহার করুন । শূন্যতা বিষয়, ব্যবহারের প্রকৃত টাইপ তাহলে is_nullএবং ===0, ===false, ===''


1

ভেরটি সেট না করা হলে খালি সত্যটি ফিরে আসে। তবে ভ্যাসটি খালি না থাকলেও আইসেটটি সত্য দেয়।


-3
$var = 'abcdef';
if(isset($var))
{
   if (strlen($var) > 0);
   {
      //do something, string length greater than zero
   }
   else
   {
     //do something else, string length 0 or less
   }
}

এটি একটি সহজ উদাহরণ। আশা করি এটা সাহায্য করবে.

সম্পাদনা করুন: issetইভেন্টে যোগ করা হয়েছে একটি ভেরিয়েবল উপরের মতো সংজ্ঞায়িত না হলে এটি ত্রুটি সৃষ্টি করবে, এটির প্রথম সেটটি কমপক্ষে রাস্তায় কিছুটা মাথা ব্যথা দূর করতে সহায়তা করবে কিনা তা পরীক্ষা করে দেখানো হবে।


7
strlen শূন্যের নিচে ? আমি যে স্ট্রিং দেখতে চাই।
ছদ্মবেশ

@ মাত্র একটি মোটামুটি উদাহরণ অনুধাবন করুন :) ঠিক আছে ব্যবহার = 0 নয় <0
আকোস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.