কিছু শালীন উত্তর, তবে কেবল ভেবেছিলাম যে পিএইচপি যখন অ্যারেটি খালি রয়েছে তা নির্ধারণ করে আমি আরও স্পষ্ট করে ব্যাখ্যা করার জন্য কিছুটা প্রসারিত করব।
প্রধান নোট:
একটি কী (বা কী) সহ একটি অ্যারে খালি নয় হিসাবে নির্ধারিত হবে পিএইচপি দ্বারা ।
অ্যারে মানগুলির অস্তিত্বের জন্য কীগুলি থাকা প্রয়োজন, অ্যারেতে মান থাকা বা না থাকা তা খালি কিনা তা নির্ধারণ করে না, কেবল কোনও কী না থাকলে (এবং অতএব কোনও মান নেই)।
সুতরাং অ্যারের সাথে চেক করা empty()
আপনার মানগুলি আছে কি না তা কেবল আপনাকে জানায় না, অ্যারেটি খালি আছে কিনা তা আপনাকে জানায় এবং কীগুলি অ্যারের অংশ are
সুতরাং কোন চেকিং পদ্ধতিটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার আগে আপনি কীভাবে আপনার অ্যারে উত্পাদন করছেন তা বিবেচনা করুন।
যেমন একটি অ্যারে হবে কী যখন একজন ব্যবহারকারী আপনার HTML ফর্ম জমা দিয়েছে যখন প্রতিটি ফর্ম ক্ষেত্র একটি অ্যারের নাম (অর্থাত হয়েছে আছে name="array[]"
)। প্রতিটি ক্ষেত্রের জন্য
একটি খালি খালি অ্যারে উত্পাদন করা হবে কারণ প্রতিটি ফর্ম ক্ষেত্রের অ্যারের জন্য অটো বর্ধিত মূল মান থাকবে।
উদাহরণস্বরূপ এই অ্যারেগুলি নিন:
/* Assigning some arrays */
// Array with user defined key and value
$ArrayOne = array("UserKeyA" => "UserValueA", "UserKeyB" => "UserValueB");
// Array with auto increment key and user defined value
// as a form field would return with user input
$ArrayTwo[] = "UserValue01";
$ArrayTwo[] = "UserValue02";
// Array with auto incremented key and no value
// as a form field would return without user input
$ArrayThree[] = '';
$ArrayThree[] = '';
আপনি যদি উপরের অ্যারেগুলির জন্য অ্যারে কী এবং মানগুলি প্রতিধ্বনিত করেন তবে আপনি নিম্নলিখিতটি পান:
শুরুর এক: [ইউজারকেএএ] => [ইউজারভ্যালুএ]
[ইউজারকিবি] => [ইউজারভ্যালিউবি]
দু'বার প্রবেশ করুন:
[0] => [ইউজারভ্যালিউ01]
[1] => [ইউজারভ্যালু02]
তিনটি প্রবেশ করুন:
[0] => []
[1] => []
এবং উপরের অ্যারেগুলি পরীক্ষা করে empty()
নিম্নলিখিত ফলাফলগুলি প্রদান করে:
প্রথম এক:
$ অ্যারেওন খালি নেই
দু'বার শুরুর দিকে : T অ্যারে টু খালি নেই
তিনটে প্রবেশ করুন:
$ অ্যারেথ্রি খালি নেই
আপনি যখন অ্যারে নির্ধারণ করবেন তখন একটি অ্যারে সর্বদা খালি থাকবে তবে এর পরে এটি ব্যবহার করবেন না যেমন:
$ArrayFour = array();
এটি খালি হবে, যেমন পিএইচপি উপরেরটি ব্যবহার করার সময় সত্য ফিরে আসবে empty()
।
সুতরাং যদি আপনার অ্যারেতে কী থাকে - উদাহরণস্বরূপ কোনও ফর্মের ইনপুট নামগুলি বা যদি আপনি ম্যানুয়ালি এ্যাসাইন করেন (যেমন কী হিসাবে ডাটাবেস কলামের নামগুলির সাথে একটি অ্যারে তৈরি করুন তবে ডাটাবেস থেকে কোনও মান / ডেটা নেই), তবে অ্যারেটি হবে না empty()
।
এই ক্ষেত্রে, আপনি প্রতিটি কীটির কোনও মান আছে কিনা তা পরীক্ষা করে, আপনি একটি অগ্রভাগে অ্যারে লুপ করতে পারেন। আপনার যদি যাইহোক অ্যারে দিয়ে চালানোর দরকার হয় তবে সম্ভবত কীগুলি পরীক্ষা করা বা ডেটা স্যানিটাইজিং করা দরকার এটি একটি ভাল পদ্ধতি।
তবে আপনার যদি কেবল "মূল্যবোধের উপস্থিতি থাকে" সত্য বা মিথ্যা প্রত্যাবর্তন করতে হয় তবে এটি সর্বোত্তম পদ্ধতি নয় । অ্যারেটির কোনও মান রয়েছে কিনা তা নির্ধারণ করার জন্য বিভিন্ন পদ্ধতি রয়েছে যখন এটি জানাগেছে যে এর কী থাকবে। কোনও ক্রিয়াকলাপ বা শ্রেণি সর্বোত্তম পন্থা হতে পারে তবে সর্বদা এটি আপনার পরিবেশ এবং সঠিক প্রয়োজনীয়তার উপর নির্ভর করে পাশাপাশি আপনি বর্তমানে অ্যারের সাথে কী করছেন (যদি কিছু হয়) তবে অন্যান্য বিষয়ের উপর নির্ভর করে।
অ্যারেটির মান আছে কিনা তা যাচাই করতে এখানে খুব কম কোড ব্যবহার করা হচ্ছে এমন একটি পদ্ধতি রয়েছে:
ব্যবহার array_filter()
:
অ্যারেতে প্রতিটি মানকে কলব্যাক ফাংশনে পাঠিয়ে দেয়। যদি কলব্যাক ফাংশনটি সত্য হয়, অ্যারে থেকে বর্তমান মান ফলাফল অ্যারেতে ফিরে আসবে। অ্যারে কীগুলি সংরক্ষিত আছে।
$EmptyTestArray = array_filter($ArrayOne);
if (!empty($EmptyTestArray))
{
// do some tests on the values in $ArrayOne
}
else
{
// Likely not to need an else,
// but could return message to user "you entered nothing" etc etc
}
চলমান array_filter()
সব তিনটি উদাহরণ অ্যারে তে (এই উত্তরে প্রথম কোড ব্লক তৈরি করা) নিম্নলিখিত মধ্যে ফলাফল:
প্রথম এক:
ray অ্যারেওন খালি নেই
দু'বার প্রবেশ করুন : $ অ্যারেটিও খালি নেই
তিনটি প্রবেশ করুন:
ray অ্যারেথ্রি খালি আছে
সুতরাং যখন কোনও মান নেই, কী আছে কিনা তা নয়, array_filter()
একটি নতুন অ্যারে তৈরি করতে ব্যবহার করে এবং তারপরে নতুন অ্যারেটি খালি শো রয়েছে কিনা তা পরীক্ষা করে দেখুন মূল অ্যারেটিতে কোনও মান আছে কিনা।
এটি আদর্শ এবং কিছুটা অগোছালো নয়, তবে আপনার যদি খুব বড় অ্যারে থাকে এবং অন্য কোনও কারণে এটির মাধ্যমে লুপের প্রয়োজন না হয় তবে কোডের প্রয়োজনীয়তার ক্ষেত্রে এটি সবচেয়ে সহজ।
আমি ওভারহেডগুলি চেক করার ক্ষেত্রে অভিজ্ঞ নই, তবে কোনও মান খুঁজে পাওয়া যায় কিনা তা ব্যবহার array_filter()
এবং foreach
পরীক্ষার মধ্যে পার্থক্যগুলি জানা ভাল হবে ।
স্পষ্টতই বেঞ্চমার্কটি বিভিন্ন পরামিতিগুলিতে, ছোট এবং বড় অ্যারেগুলিতে এবং যখন মান থাকে এবং না হয় ইত্যাদি হতে হবে would