কোথায় আমি ইসেট () এবং! খালি () ব্যবহার করব


105

আমি কোথাও পড়েছি যে isset()ফাংশন একটি খালি স্ট্রিং হিসাবে TRUE, তাই বিবেচনা করেisset() কোনও HTML ফর্ম থেকে পাঠ্য ইনপুট এবং পাঠ্য বাক্সগুলিকে বৈধতা দেওয়ার কার্যকর উপায় নয়।

সুতরাং আপনি empty()পরীক্ষা করতে পারেন যে কোনও ব্যবহারকারী কিছু টাইপ করেছেন।

  1. এটি কি সত্য যে isset()ফাংশনটি একটি খালি স্ট্রিং হিসাবে আচরণ করে TRUE?

  2. তাহলে কোন পরিস্থিতিতে আমার ব্যবহার করা উচিত isset()? !empty()কিছু আছে কিনা তা যাচাই করার জন্য কি আমাকে সর্বদা ব্যবহার করা উচিত?

পরিবর্তে উদাহরণস্বরূপ

if(isset($_GET['gender']))...

এটি ব্যবহার করে

if(!empty($_GET['gender']))...

উত্তর:


135

isset বনাম! খালি

এফটিএ:

"isset () ভেরিয়েবলের (ভুয়া, 0 বা খালি স্ট্রিং) সহ মান রয়েছে কিনা তা পরীক্ষা করে থাকে তবে NULL হয় না var var উপস্থিত থাকলে সত্য প্রদান করে; অন্যথায় মিথ্যা।

অন্যদিকে খালি () ফাংশনটি পরীক্ষা করে যদি ভেরিয়েবলের একটি ফাঁকা মান খালি স্ট্রিং থাকে, 0, NULL বা মিথ্যা। ভের যদি শূন্য ও শূন্য-না মান হয় তবে FALSE প্রদান করে।


47
এফটিএ: নিবন্ধ থেকে
জিয়াংসিন গাও

5
empty()খালি অ্যারের ক্ষেত্রেও সত্য ফিরে আসে।
মিত্যা

এমনকি empty()0 এর জন্য সত্য প্রদান করে, "0" দুর্ঘটনাক্রমে একটি স্ট্রিংয়ের ক্ষেত্রে এই অপারেটরটিকে গণিতের জন্য ব্যবহার করা ভাল ধারণা নয়। এটি বিপজ্জনক হতে পারে। পরিবর্তে, মৌলিক ব্যবহার >, <এবং ==অপারেটর ও ধর্মান্তরিত ভেরিয়েবল ব্যবহার intval()বা floatval()
ক্যালিয়াজি

32

সর্বাধিক সাধারণ উপায়ে:

  • issetযদি চলক (বা একটি অ্যারের উপাদান, বা কোনও বস্তুর সম্পত্তি) বিদ্যমান থাকে তবে এটি পরীক্ষা করে (এবং নাল নয়)
  • empty কোনও ভেরিয়েবল (...) এ কিছু খালি তথ্য না থাকলে পরীক্ষা করে tests


প্রশ্নের উত্তর 1 :

$str = '';
var_dump(isset($str));

দেয়

boolean true

কারণ পরিবর্তনশীল $strবিদ্যমান।


এবং প্রশ্ন 2 :

কোনও চলক বিদ্যমান কিনা তা নির্ধারণ করতে আপনার আইসেট ব্যবহার করা উচিত ; উদাহরণস্বরূপ, আপনি যদি অ্যারে হিসাবে কিছু ডেটা পেয়ে থাকেন তবে আপনাকে সেই অ্যারেতে কোনও কী সেট রয়েছে কিনা তা পরীক্ষা করতে হবে।
সম্পর্কে চিন্তা করুন $_GET/$_POSTউদাহরণস্বরূপ ।

এখন, এর মান নিয়ে কাজ করার জন্য, যখন আপনি জানেন যে এরকম একটি মান রয়েছে: এটি হ'ল কাজ empty


11

উভয়ই বৈধ ইনপুট চেক করার ভাল উপায় নয়।

  • isset() যথেষ্ট নয় কারণ - যেমনটি ইতিমধ্যে উল্লেখ করা হয়েছে - এটি একটি খালি স্ট্রিংকে বৈধ মান হিসাবে বিবেচনা করে।
  • ! empty() হয় যথেষ্ট নয় কারণ এটি '0' প্রত্যাখ্যান করে, যা একটি বৈধ মান হতে পারে।

isset()একটি খালি স্ট্রিংয়ের বিরুদ্ধে সমতা চেকের সাথে মিলিত ব্যবহার হ'ল ন্যূনতম যা আপনাকে যাচাই করতে হবে যে আগত প্যারামিটারের একটি মান আছে মিথ্যা sণাত্মকতা তৈরি না করে:

if( isset($_GET['gender']) and ($_GET['gender'] != '') )
{
  ...
}

তবে "বেয়ার ন্যূনতম" দ্বারা, আমি ঠিক এটি বোঝাতে চাই। উপরোক্ত সমস্ত কোড এর জন্য কিছু মান আছে কিনা তা নির্ধারণ করে $_GET['gender']। এটির জন্য মানটি নির্ধারণ করে না$_GET['gender'] হয় বৈধ (যেমন, এক("Male", "Female","FileNotFound") )।

তার জন্য, জোশ ডেভিসের উত্তর দেখুন


যেহেতু আপনি একটি শিথিল তুলনা ব্যবহার করছেন, আপনার প্রস্তাবিত স্নিপেটটি শূন্য-ইশ / মিথ্যা নন-স্ট্রিং মানটি পরিচালনা করার সময় মিথ্যা ধনাত্মকতা দেবে। 3v4l.org/aIWqA
মিকম্যাকুসা

11

issetশুধুমাত্র ভেরিয়েবলের জন্য ব্যবহার করা এবং কেবল মানগুলি নয়, তাই isset("foobar")ত্রুটি বাড়িয়ে তুলবে। পিএইচপি 5.5 হিসাবে,empty উভয় ভেরিয়েবল এবং এক্সপ্রেশন সমর্থন করে।

সুতরাং আপনার প্রথম প্রশ্ন বরং যদি হওয়া উচিত issetআয় সত্য একটি পরিবর্তনশীল যে একটি খালি স্ট্রিং ঝুলিতে জন্য। এবং উত্তরটি হ'ল:

$var = "";
var_dump(isset($var));

টাইপ তুলনা টেবিলপিএইচপি-র ম্যানুয়ালটিতে জাতীয় প্রশ্নের জন্য বেশ কার্যকর।

issetমূলত চেক করে যে কোনও ভেরিয়েবলের নাল ব্যতীত অন্য কোনও মান রয়েছে কারণ অ-বিদ্যমান ভেরিয়েবলের সর্বদা মান নাল থাকেemptyপাল্টা অংশের মতো issetহলেও এটি পূর্ণসংখ্যার মান 0এবং স্ট্রিংয়ের মানকে "0"খালি মনে করে। (আবার, তুলনা টেবিল টাইপ একবার দেখুন ।)


1
নোট করুন যে empty()পিএইচপি 5.5.0 হিসাবে "শুধুমাত্র ভেরিয়েবলের চেয়ে এক্সপ্রেশনকে সমর্থন করে"।
কমফ্রিচ

8

আপনার যদি একটি _P _POST ['পরম'] থাকে এবং ধরে নিন তবে এটির স্ট্রিং টাইপ then

isset($_POST['param']) && $_POST['param'] != '' && $_POST['param'] != '0'

অনুরূপ

!empty($_POST['param'])

4

isset () কোনও HTML ফর্ম থেকে পাঠ্য ইনপুট এবং পাঠ্য বাক্সগুলিকে বৈধতা দেওয়ার কার্যকর উপায় নয়

আপনি আবার লিখতে পারেন যে "isset () ইনপুটটি বৈধ করার উপায় নয়"। ইনপুট বৈধকরণের জন্য, পিএইচপি এর ফিল্টার এক্সটেনশন ব্যবহার করুন । আসলে আপনাকে ইনপুটটি ফিল্টার এবং / অথবা স্যানিটাইজ করার filter_has_var()সময় চলকটি বিদ্যমান কিনা তা আপনাকে জানায় filter_input()

মনে রাখবেন যে আপনাকে filter_has_var()আগে ব্যবহার করতে হবে না filter_input()এবং যদি আপনি সেট না করে এমন একটি ভেরিয়েবলের জন্য জিজ্ঞাসা করেন তবে filter_input()কেবল ফিরে আসবে null


3

কখন এবং কীভাবে ব্যবহার করবেন:

  1. isset ()

0, 1 এর জন্য সত্য , খালি স্ট্রিং, একটি স্ট্রিং একটি মান রয়েছে, সত্য, মিথ্যা

নাল জন্য মিথ্যা

যেমন

$status = 0
if (isset($status)) // True
$status = null 
if (isset($status)) // False
  1. খালি

1 এর জন্য মিথ্যা , একটি মান রয়েছে এমন একটি স্ট্রিং, সত্য

নাল, খালি স্ট্রিং, 0, মিথ্যা উদাহরণের জন্য সত্য

$status = 0
if(empty($status)) // true
$status = 1
if(empty($status)) // False

2

আইসেটটি কোনও কিছুর উদাহরণ উপস্থিত রয়েছে কিনা তা নির্ধারণ করতে ব্যবহৃত হয়, যদি কোনও ভেরিয়েবল ইনস্ট্যান্ট করা হয় ... এটি প্যারামিটারের মানের সাথে সম্পর্কিত নয় ...

পাস্কাল মার্টিন ... +1 ...

খালি () ভেরিয়েবলের অস্তিত্ব না থাকলে কোনও সতর্কতা তৈরি করে না ... সুতরাং, যখন আপনি এটি পরিবর্তন করতে চান তখন ভেরিয়েবলের অস্তিত্বের জন্য পরীক্ষা করার সময় আইসেট () পছন্দ করা হয় ...


1

ব্যবহার emptyযথেষ্ট:

if(!empty($variable)){
    // Do stuff
}

তদতিরিক্ত, আপনি যদি একটি পূর্ণসংখ্যার মান চান তবে এটি যাচাইয়ের পক্ষেও উপযুক্ত intval($variable) !== FALSE


2
এছাড়াও, অন্তর্নিহিত () কখনই মিথ্যা দেয় না।
জোশ ডেভিস

1
এটি '0' একটি বৈধ স্ট্রিং হওয়ায় এটি পর্যাপ্ত নয় empty... isset/ filter_has_varvar উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে অবশ্যই ব্যবহার করা উচিত।
ইউশা আলেয়াউব


1

ভেরিয়েবলের কোনও বিষয়বস্তু আছে কিনা তা পরীক্ষা করার জন্য আমি এখানে দ্রুত উপায় খুঁজছিলাম। এখানে উত্তরগুলির কোনওোটাই একটি সম্পূর্ণ সমাধান সরবরাহ করে নি, তাই এটি এখানে:


এটা তোলে যদি ইনপুট কিনা চেক করতে যথেষ্ট ''বা null, কারণ:

URL এর .../test.php?var=ফলাফলগুলির জন্য অনুরোধ করুন$_GET['var'] = ''

URL এর .../test.phpফলাফলগুলির জন্য অনুরোধ করুন$_GET['var'] = null


isset()falseভেরিয়েবলটি উপস্থিত থাকে এবং সেট না করা হয় কেবল তখনই প্রত্যাবর্তন করে null, তাই আপনি এটি ব্যবহার করলে আপনি পাবেন gettrue খালি স্ট্রিংয়ের জন্য ('' ) পাবেন।

empty()উভয় nullএবং ''খালি বিবেচনা করে তবে এটি বিবেচনা করে'0' , যা কিছু ব্যবহারের ক্ষেত্রে সমস্যা।

যদি আপনি '0'খালি হিসাবে আচরণ করতে চান তবে ব্যবহার করুনempty() । অন্যথায় নিম্নলিখিত চেক ব্যবহার করুন:

$var .'' !== ''falseশুধুমাত্র নিম্নলিখিত ইনপুটগুলির জন্য মূল্যায়ন :

  • ''
  • null
  • false

আমি কেবলমাত্র ফাঁকা স্থান এবং লাইন ব্রেক সহ স্ট্রিংগুলি ফিল্টার করতে নীচের চেকটি ব্যবহার করি:

function hasContent($var){
    return trim($var .'') !== '';
}

0

আমি বিজ্ঞপ্তিগুলি এড়ানোর জন্য নিম্নলিখিতটি ব্যবহার করি, এটি জিইটি বা পোষ্টে ঘোষিত ভেরিয়াটি পরীক্ষা করে এবং @ উপসর্গের সাহায্যে আপনি নিরাপদে খালি নন কিনা তা পরীক্ষা করে দেখতে পারেন এবং ভেরটি সেট না করা থাকলে নোটিশটি এড়াতে পারবেন:

if( isset($_GET['var']) && @$_GET['var']!='' ){
    //Is not empty, do something
}

"Stfu অপারেটর" ( @) উত্সাহ দেওয়া উচিত নয় এবং এটি আপনার স্নিপেটের জন্য প্রয়োজনীয় নয়। এটি একটি ভাল উত্তর নয়। আপনি একটি শিথিল তুলনা করছেন। আপনি পাশাপাশি ব্যবহার করতে পারেন !empty()
মিকম্যাকুসা

1
ওহ মানুষ ... কোডিংয়ের খারাপ উদাহরণের জন্য এটি দুর্দান্ত। @ডিবাগিংয়ের সমস্যায় আপনাকে দেবে, পৃষ্ঠার প্রভাবটি ধীরে ধীরে এবং আপনার কাছে এখনও error_logএক মুহুর্তে 1 গিগাবাইটের বেশি থাকতে পারে । শুধু স্মার্ট এবং ব্যবহার করুন !empty(), !is_null()বা এর মতো কিছু।
আইভিজান স্টিফান স্টিপিয়াস

0

ভেরিয়েবলটি মান সহ নির্ধারণ করা হয়েছে কিনা তা পরীক্ষা করার জন্য isset () ব্যবহার করা হয় এবং প্রদত্ত ভেরিয়েবলটি খালি আছে কিনা তা খালি () ব্যবহার করা হয়।

ভেরিয়েবলটি শূন্য না হলে isset () সত্য ফিরে আসে যখন ভেরিয়েবলটি খালি স্ট্রিং হলে খালি () সত্য দেয় returns


0
    $var = '';
// 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';
    }

সূত্র: পিএইচপি.এন.


0

isset () পরীক্ষা করে যদি কোনও ভেরিয়েবল সেট করা থাকে এবং নাল না হয়:

http://us.php.net/manual/en/function.isset.php

ভেরিয়েবলটি নির্দিষ্ট মানগুলিতে সেট করা হলে খালি () সত্য ফিরে আসতে পারে:

http://us.php.net/manual/en/function.empty.php

<?php

$the_var = 0;

if (isset($the_var)) {
  echo "set";
} else {
  echo "not set";
}

echo "\n";

if (empty($the_var)) {
  echo "empty";
} else {
  echo "not empty";
}
?>


0

খালি কৌতুক করবে। আপনার যদি কেবল ডেটা বিদ্যমান থাকে কিনা তা যাচাই করতে হয় তবে অন্য খালি আইসেট ব্যবহার অন্যান্য বৈধতাগুলি পরিচালনা করতে পারে

<?php
$array = [ "name_new" => "print me"];

if (!empty($array['name'])){
   echo $array['name'];
}

//output : {nothing}

////////////////////////////////////////////////////////////////////

$array2 = [ "name" => NULL];

if (!empty($array2['name'])){
   echo $array2['name'];
}

//output : {nothing}

////////////////////////////////////////////////////////////////////

$array3 = [ "name" => ""];

if (!empty($array3['name'])){
   echo $array3['name'];
}

//output : {nothing}  

////////////////////////////////////////////////////////////////////

$array4 = [1,2];

if (!empty($array4['name'])){
   echo $array4['name'];
}

//output : {nothing}

////////////////////////////////////////////////////////////////////

$array5 = [];

if (!empty($array5['name'])){
   echo $array5['name'];
}

//output : {nothing}

?>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.