খালি অ্যারেগুলির জন্য চেক করা হচ্ছে: খালি বনাম খালি গণনা


99

এই প্রশ্নটিতে ' পিএইচপি অ্যারে খালি কিনা তা কীভাবে বলা যায় "এই প্রশ্নটিতে আমাকে এই প্রশ্নটি ভাবছিল

অ্যারেটি খালি আছে কিনা তা নির্ধারণের countপরিবর্তে এমন কোনও কারণ রয়েছে যা ব্যবহার করা উচিত empty?

আমার ব্যক্তিগত চিন্তাভাবনাটি হ'ল যদি 2 টি খালি অ্যারেগুলির ক্ষেত্রে সমান হয় তবে আপনার ব্যবহার করা উচিত emptyকারণ এটি বুলিয়ান প্রশ্নের একটি বুলিয়ান উত্তর দেয়। উপরের লিঙ্কযুক্ত প্রশ্ন থেকে মনে count($var) == 0হয় এটি জনপ্রিয় পদ্ধতি। আমার কাছে, প্রযুক্তিগতভাবে সঠিক হওয়ার পরেও তা বোঝায় না। উদাহরণস্বরূপ : $ var, আপনি খালি? উত্তর: 7 । হুম ...

এর count == 0পরিবর্তে আমার কেবল ব্যক্তিগত রুচির বিষয়টি ব্যবহার করার কোনও কারণ আছে ?

এখন যেমন মুছে ফেলা উত্তরের জন্য অন্যরা মন্তব্যগুলিতে নির্দেশ করেছেন, countতাতে বড় অ্যারেগুলির জন্য পারফরম্যান্সের প্রভাব পড়বে কারণ এতে সমস্ত উপাদান গণনা emptyকরতে হবে , যেখানে এটি খালি নয় তা জানার সাথে সাথে থামতে পারে। সুতরাং, যদি তারা এই ক্ষেত্রে একই ফলাফল দেয় তবে countসম্ভাব্যভাবে অদক্ষ হয় তবে আমরা কেন কখনও ব্যবহার করব count($var) == 0?


আমি ধরে নিচ্ছি আপনার উদ্দেশ্যটি কেবলমাত্র অ্যারেগুলিতে কথোপকথনকে সীমাবদ্ধ করা, তবে এটি লক্ষ্য করার মতো বিষয় হতে পারে যে আপনি যদি অবজেক্টের সাথে কাজ করে থাকেন তবে গেমটি পুরোপুরি পরিবর্তিত হবে (যেমন, এটি গণনীয়, আইট্রেটর ইত্যাদি প্রয়োগ করে)।

9
খালি অ্যারে falseপিএইচপি- তে সমান - এর দরকার নেই empty()বা দরকার নেই count()
কবি

@ কবি কোড দয়া করে।
TheRealChx101

@ দ্য রিইলসিএইচএক্স ১০১১ এর হিসাবে কেবল করুন: if (!$myArray) { echo "array is empty"; } স্যান্ডবক্স.অনলাইনপ্পফুনিউশনস
কবি

আজকাল, লিঙ্কযুক্ত প্রশ্নের জনপ্রিয় বিকল্পটি ব্যবহার করা হচ্ছে empty()
ফোনিক্স

উত্তর:


99

আমি সাধারণত ব্যবহার empty। আমি নিশ্চিত না কেন লোকেরা সত্যিই গণনাটি ব্যবহার করবে - যদি অ্যারে বড় হয় তবে গণনায় আরও বেশি সময় লাগে / বেশি ওভারহেড থাকে। অ্যারেটি খালি কিনা তা আপনার যদি খালি জানতে হয় তবে খালি ব্যবহার করুন।


4
অ্যারে খালি না হলে এই ফাংশনগুলি সত্যই পৃথক হয় ।
জ্যাকো

4
@ জ্যাকো: আমি এ নিয়ে বিতর্ক করছি না। তবে আপনি যদি এটি খালি পরীক্ষা করে দেখেন তবে আমি কী প্রাসঙ্গিকতা তা দেখতে পাচ্ছি না - এটি একটি বুলিয়ান ফলাফলের সাথে একটি প্রশ্ন যা ফাংশনটি ফিরে আসবে। যা খালি বিবেচিত তা বিবেচনা না করে দেখুন কীভাবে সেই মানদণ্ডগুলি ভুল উত্তর উত্থাপন করতে পারে যদি না আপনার পরীক্ষায় ভেরি না হয় যা কেস সম্পূর্ণ ভিন্ন ইস্যুতে থাকে না।
প্রোডিজিটালসন

23
@ প্রোডিজিটালসন আমি বলব যে গণনা O(1), যেহেতু পিএইচপি অভ্যন্তরীণভাবে উপাদানগুলির সংখ্যা সঞ্চয় করে। এই উত্তরটি দেখুন stackoverflow.com/a/5835419/592454
elitalon

4
@ এলিটন: তবে এখনও - এমনকি যদি পারফরম্যান্সে কিছু বা সামান্য পার্থক্য না হয় তবে কেন আপনার গণনার প্রয়োজন নেই যদি গণনাটি ব্যবহার করবেন?
প্রোডিজিটালসন

4
খালি () খুব ত্রুটি ক্ষমা করে। আমি মাত্র 2 ঘন্টা একটি সাবক্লাস ডিবাগ করে কাটিয়েছি যা তার সুপারক্লাসের একটি প্রাইভেট সদস্য ভেরিয়েবলের ফাঁকা () পরীক্ষা করেছে (সুপারক্লাসের সদস্য ভেরিয়েবলের স্কোপটি সুরক্ষিত করা হয়েছে, তবে খালি () কোনও ত্রুটি ফেরেনি - ফলাফলটি কেবল এমন কিছু ছিল যা উচিত ঘটেছে, ঘটেছিল না: সাবক্লাসে সদস্য ভেরিয়েবলের অস্তিত্বকে ঠিক ঠিক একইভাবে বিবেচনা করা হয়েছিল যেমন এই সদস্য ভেরিয়েবল, একটি অ্যারেটি খালি ছিল - যেমন, যদিও এর কোনও উপাদান নেই)। এটি সমস্যাযুক্ত এবং পিএইচপি খুব ক্ষমাশীল হওয়ার অন্য একটি উদাহরণ।
ম্যাথু স্লিম্যান

47

কোনটি আসলে খুব দ্রুত ছিল তা দেখার জন্য আমি কৌতূহল ছিলাম তাই সেই ফাংশনগুলি বেনমার্ক করার জন্য আমি একটি সাধারণ স্ক্রিপ্ট তৈরি করেছিলাম।

<?php

function benchmark($name, $iterations, $action){
    $time=microtime(true);
    for($i=0;$i<=$iterations;++$i){
        $action();
    }
    echo $name . ' ' . round(microtime(true)-$time, 6) . "\n";
}

$iterations = 1000000;
$x = array();
$y = range(0, 10000000);
$actions = array(
    "Empty empty()" => function() use($x){
        empty($x);
    },
    "Empty count()" => function() use($x){
        count($x);
    },
    "Full empty()" => function() use($y){
        empty($y);
    },
    "Full count()" => function() use($y){
        count($y);
    },
    ############
    "IF empty empty()" => function() use($x){
        if(empty($x)){ $t=1; }
    },
    "IF empty count()" => function() use($x){
        if(count($x)){ $t=1; }
    },
    "IF full empty()" => function() use($y){
        if(empty($y)){ $t=1; }
    },
    "IF full count()" => function() use($y){
        if(count($y)){ $t=1; }
    },
    ############
    "OR empty empty()" => function() use($x){
        empty($x) OR $t=1;
    },
    "OR empty count()" => function() use($x){
        count($x) OR $t=1;
    },
    "OR full empty()" => function() use($y){
        empty($y) OR $t=1;
    },
    "OR full count()" => function() use($y){
        count($y) OR $t=1;
    },
    ############
    "IF/ELSE empty empty()" => function() use($x){
        if(empty($x)){ $t=1; } else { $t=2; }
    },
    "IF/ELSE empty count()" => function() use($x){
        if(count($x)){ $t=1; } else { $t=2; }
    },
    "IF/ELSE full empty()" => function() use($y){
        if(empty($y)){ $t=1; } else { $t=2; }
    },
    "IF/ELSE full count()" => function() use($y){
        if(count($y)){ $t=1; } else { $t=2; }
    },
    ############
    "( ? : ) empty empty()" => function() use($x){
        $t = (empty($x) ? 1 : 2);
    },
    "( ? : ) empty count()" => function() use($x){
        $t = (count($x) ? 1 : 2);
    },
    "( ? : ) full empty()" => function() use($y){
        $t = (empty($y) ? 1 : 2);
    },
    "( ? : ) full count()" => function() use($y){
        $t = (count($y) ? 1 : 2);
    }
);

foreach($actions as $name => $action){
    benchmark($name, $iterations, $action);
}
//END

যেহেতু আমি এটি করছি তখন আমি কার্য সম্পাদনকারী ক্রিয়াকলাপগুলি পরীক্ষা করার চেষ্টা করেছি যা সাধারণত গণনা () / খালি () এর সাথে যুক্ত হবে

পিএইচপি 5.4.39 ব্যবহার:

Empty empty() 0.118691
Empty count() 0.218974
Full empty() 0.133747
Full count() 0.216424
IF empty empty() 0.166474
IF empty count() 0.235922
IF full empty() 0.120642
IF full count() 0.248273
OR empty empty() 0.123875
OR empty count() 0.258665
OR full empty() 0.157839
OR full count() 0.224869
IF/ELSE empty empty() 0.167004
IF/ELSE empty count() 0.263351
IF/ELSE full empty() 0.145794
IF/ELSE full count() 0.248425
( ? : ) empty empty() 0.169487
( ? : ) empty count() 0.265701
( ? : ) full empty() 0.149847
( ? : ) full count() 0.252891

হিপহপ ভিএম 3.6.1 (ডিবিজি) ব্যবহার করে

Empty empty() 0.210652
Empty count() 0.212123
Full empty() 0.206016
Full count() 0.204722
IF empty empty() 0.227852
IF empty count() 0.219821
IF full empty() 0.220823
IF full count() 0.221397
OR empty empty() 0.218813
OR empty count() 0.220105
OR full empty() 0.229118
OR full count() 0.221787
IF/ELSE empty empty() 0.221499
IF/ELSE empty count() 0.221274
IF/ELSE full empty() 0.221879
IF/ELSE full count() 0.228737
( ? : ) empty empty() 0.224143
( ? : ) empty count() 0.222459
( ? : ) full empty() 0.221606
( ? : ) full count() 0.231288

আপনি যদি পিএইচপি ব্যবহার করছেন তবে উপসংহার:

  1. খালি () খালি এবং জনবহুল অ্যারে সহ উভয় পরিস্থিতিতে গণনার () চেয়ে অনেক বেশি দ্রুত

  2. গণনা () সম্পূর্ণ বা খালি অ্যারে দিয়ে একই সম্পাদন করে।

  3. একটি সাধারণ আইএফ বা কেবল একটি বুলিয়ান অপারেশন একই কাজ।

  4. আইএফ / ইএলএসই (?:) এর চেয়ে খুব সামান্য দক্ষ। আপনি যদি মাঝখানে প্রকাশের সাথে কোটি কোটি পুনরাবৃত্তি না করেন এটি সম্পূর্ণ তুচ্ছ।

আপনি যদি এইচএইচভিএম ব্যবহার করেন তবে সিদ্ধান্ত:

  1. খালি () গণনার তুলনায় এক কিশোর-মজাদার কিছুটা দ্রুত () তবে তুচ্ছ এটি।

    [বাকিগুলি পিএইচপি-র মতোই]

উপসংহারের উপসংহারে, আপনার অ্যারেটি খালি কিনা তা যদি কেবল জানতে হয় তবে খালি () ব্যবহার করুন;

এটি কেবল একটি কৌতূহলী পরীক্ষা ছিল যা অনেকগুলি বিষয় বিবেচনায় না নিয়েই করা হয়েছিল। এটি ধারণার একটি প্রমাণ এবং এটি উত্পাদন অপারেশন প্রতিবিম্বিত নাও হতে পারে।


নমুনা পরীক্ষার কোডের জন্য ধন্যবাদ .... আমি কেবল এটি ব্যবহার করেছি এবং এটির if($x){চেয়ে দ্রুতগতিতে পাওয়া গেছে if(empty($x)){(কেবলমাত্র যদি আপনি জানেন যে $xএটি ঘোষিত হয়েছে)।
রেডজার্ফ

আপনার পরীক্ষার কোডটি সত্যই খারাপ। আপনি অনেকগুলি অতিরিক্ত জিনিস যুক্ত করছেন, যেমন একটি অনামী ফাংশন কল। যদি আমি সরিয়ে ফেলি এবং আমি খালি কোডটি চালিয়ে যাই (একে অপরের পরে চক্রের জন্য) তবে আমি একটি বিশাল পার্থক্য পাই। এবং আমি সেই ক্ষেত্রে দ্রুত বলতে চাইছি যদি বিবৃতিতে না থাকে countএবং emptyকল না থাকে। তারপরে এটি আসে emptyএবং স্থায়ী হয় count। তবে খালি আপনার তুলনায় খালিটি দশগুণ দ্রুত! সাধারণ অ্যারে পরীক্ষা: 0.104662, খালি: 0.177659, গণনা: 1.175125 পিএইচপি 5.6 এ অন্যথায় আপনার কোডটিও আপনার বর্ণিত সংস্করণে একই ফলাফল দেয় result শুধু এটি জাল ফলাফল।
স্বর্ণড্রাগন 700

16

আমি মনে করি এটি কেবল ব্যক্তিগত পছন্দ। কিছু লোক বলতে পারে emptyদ্রুত (উদাহরণস্বরূপ: // jamessocol.com / প্রকল্পসমূহ / অ্যাকাউন্ট_ভিএস_এম্পটি.পিএপি ) অন্যরা বলতে পারে countএটি মূলত অ্যারেগুলির জন্য তৈরি হওয়ার কারণে এটি আরও ভাল। emptyআরও সাধারণ এবং অন্যান্য ধরণের ক্ষেত্রেও প্রয়োগ করা যেতে পারে।

পিএইচপি.এন.একটির জন্য নিম্নলিখিত সতর্কতা দেয় count:

গণনা () সেট করা হয়নি এমন একটি ভেরিয়েবলের জন্য 0 প্রদান করতে পারে তবে এটি শূন্য অ্যারে দিয়ে সূচনা করা ভেরিয়েবলের জন্য 0 প্রদান করতে পারে। কোনও ভেরিয়েবল সেট করা আছে কিনা তা পরীক্ষা করতে আইসেট () ব্যবহার করুন।

অন্য কথায়, যদি ভেরিয়েবলটি সেট না করা থাকে তবে আপনি পিএইচপি থেকে নোটিশ পাবেন যে এটি অপরিজ্ঞাপিত। অতএব, ব্যবহারের আগে count, এর সাথে ভেরিয়েবলটি পরীক্ষা করা ভাল isset। এটি সঙ্গে প্রয়োজন হয় না empty


4
এটি আকর্ষণীয় যে পক্ষে পক্ষে একটি যুক্তি countহ'ল এটি মূলত অ্যারেগুলির জন্য তৈরি হয়েছিল ... তবুও বস্তুগুলি বাস্তবায়ন Countableকরতে পারে এবং আপনি স্ক্যালার মানগুলিতে পাস করতে পারেন count()এবং একটি বৈধ ফলাফল পেতে পারেন।

4
গণনা () হতে পারে একটি পরিবর্তনশীল যে সেট না করা হয় জন্য 0 ফিরে, কিন্তু এটা হতে পারে এছাড়াও ... । এর অনিশ্চয়তা প্রকাশ করতে
মডেল

isset()পয়েন্টটি সম্পর্কে কেবল একটি মন্তব্য । আপনি যদি পিএইচপি-তে বিজ্ঞপ্তিগুলি সম্পর্কে উদ্বিগ্ন হন তবে আপনার ইতিমধ্যে আপনার অ্যারে ঘোষণা করা উচিত ছিল। যদি আপনি পিএইচপিকে গতিশীলভাবে আপনার অ্যারে ঘোষণা করতে দেন তবে আপনি সেই সময়ে একটি বিজ্ঞপ্তিও পাবেন। আমি মনে করি php.net এ সতর্কতার আসল বিষয়টি হ'ল এটি countনির্ধারণ করার জন্য আপনার ব্যবহার করা উচিত নয় যে এটি শূন্য অ্যারে যেমন ফলাফল দেয় তেমন অ্যারে ঘোষণা করা হয়েছে কি না।
নোয়া ডানকান

12

অ্যারেটি খালি কিনা তা নির্ধারণের সময় খালি পরিবর্তে গণনাটি ব্যবহার করা উচিত এমন কোনও কারণ আছে কি?

যখন খালি খালি অ্যারে এর আকার না জেনে কিছু করার দরকার হয়:

if( 0 < ( $cnt = count($array) ) )
{
 echo "Your array size is: $cnt";
}
else
 echo "Too bad, your array is empty :(";

তবে আপনি 100% নিশ্চিত না হওয়া পর্যন্ত আমি গণনাটি ব্যবহারের পরামর্শ দেব না যে আপনি যা গণনা করছেন এটি একটি অ্যারে। ইদানীং আমি কোডটি ডিবাগ করছি, যেখানে ত্রুটি ফাংশনটি FALSEখালি অ্যারের পরিবর্তে ফিরে আসছিল এবং আমি যা আবিষ্কার করেছি তা হ'ল:

var_dump(count(FALSE));

আউটপুট:

int 1

তার পর থেকে আমি ব্যবহার করছি emptyবা if(array() === $array)আমার কাছে অ্যারে রয়েছে তা খালি রয়েছে তা নিশ্চিত হতে is


6

count()প্রয়োগকারী অ্যারের মতো ইন্টারফেসগুলির সাথে আরও ভাল কাজ করে বলে মনে হচ্ছে ArrayAccess/Countableempty()এই ধরণের অবজেক্টের জন্য সত্য নাও যদি তাদের কোনও উপাদান না থাকে। সাধারণত এই ক্লাসগুলি Countableইন্টারফেসটি বাস্তবায়ন করবে , তাই যদি প্রশ্নটি হয় "এই সংগ্রহে উপাদান রয়েছে কি?" বাস্তবায়ন সম্পর্কে অনুমান না করেই, তবে count()এটি একটি ভাল বিকল্প।


আপনার অর্থ কি " এই ধরণের অবজেক্টগুলির কোনও উপাদান না থাকলেও তাদের জন্য মিথ্যাempty ফেরত পাওয়া যায়"?
অ্যালেক্স

হ্যাঁ. কোনও শ্রেণি এটি "খালি" কিনা তা নির্ধারণ করার অনুমতি দেওয়ার জন্য কোনও ইন্টারফেস নেই। এবং এটি এক হওয়ার জন্য এটি সত্যিকার অর্থে বোধগম্য হবে না।
রায়ান

+1 ব্যবহার countকরা একটি আরও নমনীয় এবং এক্সটেনসিবল সমাধান হতে পারে যদি আপনার কোডটি কোনও "সাধারণ" উপায়ে বাস্তবায়িত কোনও সংকলন গ্রহণ করার পক্ষে তা বোঝা countযায় ... আপনি বা অন্য কোনও উপায়ে ব্যবহার করেন তবে সংজ্ঞায়নের জন্য একমাত্র প্রাসঙ্গিক মানদণ্ড হতে পারে এমন আইএমও ...
ক্লেমিসি

.2.২ count()হিসাবে বিশাল ডাউনসাইড হ'ল এটি আর খালি ভেরিয়েবল নিতে পারে না।
রায়ান

5

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

if( $value )
{
  // array is not empty
}

if( (bool) $value )
{
  // array is still not empty
}

এই পদ্ধতিটি E_NOTICEভেরিয়েবলের সংজ্ঞা না থাকলে, একটি উত্পন্ন করে count()

আরও তথ্যের জন্য, তুলনাতে পিএইচপি ম্যানুয়াল পৃষ্ঠাটি দেখুন


4
এটি যাচাই করার সেরা উপায়, কেবলমাত্র empty()যদি আপনি E_NOTICE (যা সাধারণত একটি খারাপ ধারণা, আইএমও) চালিয়ে যাওয়া এড়ানোর চেষ্টা করছেন তবেই ব্যবহার করুন । স্পষ্টত খালি ব্যবহার করা বগি কোডে নেতৃত্ব দেবে।
কবি

3

কোডিং কমনীয়তার জন্য আমার ব্যক্তিগত পছন্দ বেশি (আমার নির্দিষ্ট ব্যবহারের ক্ষেত্রে)। আমি ড্যান ম্যাকজির সাথে একমত নই যে গণনাটি () এই ক্ষেত্রে বুলিয়ানকে পরীক্ষার জন্য সঠিক ডেটাটাইপ (এই ক্ষেত্রে বুলিয়ান) দিয়ে সাড়া দিচ্ছে না যদি 'যদি' বিবৃতিটি পূরণ করতে আরও কোড লিখতে বাধ্য হয়।

পারফরম্যান্সে এটির কোনও উল্লেখযোগ্য প্রভাব রয়েছে কিনা তা কেবলমাত্র অত্যন্ত বড় অ্যারেগুলির জন্যই বিতর্কযোগ্য (যা সম্ভবত আপনার বেশিরভাগ সেটআপে পর্যাপ্ত মেমরির বরাদ্দ থাকবে না)।

বিশেষত যখন পিএইচপি-র $ _POST অ্যারে আসে, তখন লেখার / দেখার পক্ষে আমার মতে এটি অনেক বেশি "যৌক্তিক" মনে হয়:

if ( !empty ( $_POST ) ) {
    // deal with postdata
}

3

আশা করি এটি কাউকে সহায়তা করতে পারে যদিও এর আগেই উত্তর দেওয়া হয়েছে (এবং কিছু নিয়ে বিতর্কও হয়েছে)। আমার নিজের দৃশ্যে, আমি জানি যে আমার সমস্ত অ্যারেতে 7 টি উপাদান রয়েছে (চেকগুলি আমার কোডের আগে তৈরি করা হয়েছিল) এবং আমি array_diffসমান যখন শূন্যের একটি অ্যারের প্রদান করে যা একটি সম্পাদন করছি ।

আমার 34 সেকেন্ড ছিল countএবং 17 সেকেন্ডের জন্য empty। উভয়ই আমাকে একই গণনা দেয় যাতে আমার কোডটি এখনও ঠিক আছে।

তবে আপনি পিএইচপি হিসাবে ==বা ===হিসাবে চেষ্টা করতে পারেন - দুটি অ্যারে সমান কিনা তা পরীক্ষা করে দেখুন । সবচেয়ে ভাল আমি বলতে চাই countবনাম emptyবনাম চেষ্টা করুন == empty array, তারপরে দেখুন যা আপনার নিজের সেরা পারফ দেয়। আমার ক্ষেত্রে countসবচেয়ে ধীর ছিল তাই আমি emptyএখন ব্যবহার করছি ... serializeপরবর্তী পরীক্ষা করা হবে


2

count($myArray) == 0ওভার পছন্দ করার কোনও দৃ strong় কারণ নেই empty($myArray)। তাদের অভিন্ন শব্দার্থক শব্দ রয়েছে। কিছু অন্যের চেয়ে আরও একটি পঠনযোগ্য হতে পারে। একজন অন্যের তুলনায় প্রান্তিকভাবে আরও ভাল পারফর্ম করতে পারে তবে পিএইচপি অ্যাপ্লিকেশনগুলির বৃহত সংখ্যাতে এটি কোনও উল্লেখযোগ্য কারণ হতে পারে। সমস্ত ব্যবহারিক উদ্দেশ্যে, পছন্দ স্বাদের বিষয়।


4
"পারফরম্যান্স" জিনিসটির কী হবে? "প্রাকৃতিক উদ্দেশ্য" এর ব্যাখ্যা ব্যবহার করা খারাপ অভ্যাসের দিকে পরিচালিত করে। আপনার countগণনা করার emptyসময় ব্যবহার করুন, সংগ্রহ খালি কিনা তা পরীক্ষা করার জন্য আপনাকে ব্যবহার করুন । অবশ্যই স্ট্রিং বা নালগুলির মতো প্রান্তের কেস রয়েছে তবে প্রোগ্রামারকে তার কোড সম্পর্কে চিন্তা করা দরকার। আপনি দ্বিমত পোষণ করতে পারেন, আপনাকে অনুমতি দেওয়া হয়েছে।
নেমক

কিছু সময়, গণনা সহ ($ myArray) যদি $ myArray একটি মান FALSE এর মতো বুলিয়ান হয় তবে গণনাটি কাজ করে না (php5.3 এ পরীক্ষিত)।
মিমোনি

1

কখনও কখনও খালি ব্যবহার করা আবশ্যক। উদাহরণস্বরূপ এই কোড:

$myarray = array();

echo "myarray:"; var_dump($myarray); echo "<br>";
echo "case1 count: ".count($myarray)."<br>";
echo "case1 empty: ".empty($myarray)."<br>";

$glob = glob('sdfsdfdsf.txt');

echo "glob:"; var_dump($glob); echo "<br>";
echo "case2 count: ".count($glob)."<br>";
echo "case2 empty: ".empty($glob);

আপনি যদি এই কোডটি এইভাবে চালান: http://phpfizz.org/main/code/g9x-uwi

আপনি এই আউটপুট পেতে:

myarray:array(0) { } 
case1 count: 0
case1 empty: 1

glob:bool(false) 
case2 count: 1
case2 empty: 1

সুতরাং আপনি যদি countখালি গ্লোব আউটপুট পান তবে আপনি ভুল আউটপুট পান। শূন্যতার জন্য আপনার পরীক্ষা করা উচিত।

গ্লোব ডকুমেন্টেশন থেকে :

ম্যাচ করা ফাইল / ডিরেক্টরি সম্বলিত একটি অ্যারে, কোনও ফাইল মিলে না থাকলে একটি ফাঁকা অ্যারে বা ত্রুটিতে মিথ্যা বলি দেয়।
দ্রষ্টব্য: কিছু সিস্টেমে খালি মিল এবং ত্রুটির মধ্যে পার্থক্য করা অসম্ভব।

এই প্রশ্নটিও দেখুন: কেন গণনা (মিথ্যা) 1?


1

একটি পরিবর্তনশীল নেতিবাচক ফিরে আসবে যেমন পার্স যেহেতু int(1)সঙ্গেcount()

আমি ($array === [] || !$array)খালি অ্যারে পরীক্ষা করতে পছন্দ করি ।

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

সঙ্গে উদাহরণ count()

var_dump(count(0));
> int(1)
var_dump(count(false));
> int(1)

0

আমি আমার মনের ছেলেদের পুনর্নির্মাণ করছি, ধন্যবাদ।

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

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