যেমনটি ওপি জানিয়েছে :
পিএইচপি সমস্ত অ্যারেটিকে সাহসী হিসাবে বিবেচনা করে
কোনও ফাংশন লিখতে এটি যথেষ্ট বুদ্ধিমানের নয় (আইএমএইচও) যা অ্যারেটি অ্যাসোসিয়েটিভ কিনা তা পরীক্ষা করে । প্রথম সুতরাং প্রথম জিনিস: পিএইচপি অ্যারের মধ্যে একটি কী কি :
কী হয় একটি হতে পারে পূর্ণসংখ্যা বা স্ট্রিং ।
তার মানে 3 টি সম্ভাব্য কেস রয়েছে:
- কেস ১। সমস্ত কী সংখ্যাসূচক / পূর্ণসংখ্যার হয় ।
- কেস ২. সমস্ত কী স্ট্রিং ।
- কেস ৩. কিছু কী স্ট্রিং , কিছু কী সংখ্যাসূচক / পূর্ণসংখ্যা হয় ।
আমরা নিম্নলিখিত ফাংশনগুলির সাথে প্রতিটি কেস চেক করতে পারি।
কেস 1: সমস্ত কীগুলি সংখ্যা / পূর্ণসংখ্যা হয় ।
দ্রষ্টব্য : এই ফাংশনটি খালি অ্যারেগুলির জন্যও সত্য ফিরে আসে ।
//! Check whether the input is an array whose keys are all integers.
/*!
\param[in] $InputArray (array) Input array.
\return (bool) \b true iff the input is an array whose keys are all integers.
*/
function IsArrayAllKeyInt($InputArray)
{
if(!is_array($InputArray))
{
return false;
}
if(count($InputArray) <= 0)
{
return true;
}
return array_unique(array_map("is_int", array_keys($InputArray))) === array(true);
}
কেস 2: সমস্ত কী স্ট্রিং ।
দ্রষ্টব্য : এই ফাংশনটি খালি অ্যারেগুলির জন্যও সত্য ফিরে আসে ।
//! Check whether the input is an array whose keys are all strings.
/*!
\param[in] $InputArray (array) Input array.
\return (bool) \b true iff the input is an array whose keys are all strings.
*/
function IsArrayAllKeyString($InputArray)
{
if(!is_array($InputArray))
{
return false;
}
if(count($InputArray) <= 0)
{
return true;
}
return array_unique(array_map("is_string", array_keys($InputArray))) === array(true);
}
কেস ৩. কিছু কী স্ট্রিং , কিছু কী সংখ্যাসূচক / পূর্ণসংখ্যা হয় ।
দ্রষ্টব্য : এই ফাংশনটি খালি অ্যারেগুলির জন্যও সত্য ফিরে আসে ।
//! Check whether the input is an array with at least one key being an integer and at least one key being a string.
/*!
\param[in] $InputArray (array) Input array.
\return (bool) \b true iff the input is an array with at least one key being an integer and at least one key being a string.
*/
function IsArraySomeKeyIntAndSomeKeyString($InputArray)
{
if(!is_array($InputArray))
{
return false;
}
if(count($InputArray) <= 0)
{
return true;
}
return count(array_unique(array_map("is_string", array_keys($InputArray)))) >= 2;
}
এটা যে অনুসরণ করে:
এখন, অ্যারের জন্য "জেনুইন" অ্যারে হওয়ার জন্য আমরা সবাই অভ্যস্ত, যার অর্থ:
- এর কীগুলি সমস্ত সংখ্যা / পূর্ণসংখ্যা ।
- এর কীগুলি ক্রমযুক্ত (অর্থাত্ 1 ধাপে বৃদ্ধি)।
- এর কীগুলি শূন্য থেকে শুরু হয় ।
আমরা নিম্নলিখিত ফাংশন দিয়ে পরীক্ষা করতে পারেন।
কেস 3 এ। কীগুলি হ'ল সংখ্যাসূচক / পূর্ণসংখ্যা , অনুক্রমিক এবং শূন্য-ভিত্তিক ।
দ্রষ্টব্য : এই ফাংশনটি খালি অ্যারেগুলির জন্যও সত্য ফিরে আসে ।
//! Check whether the input is an array whose keys are numeric, sequential, and zero-based.
/*!
\param[in] $InputArray (array) Input array.
\return (bool) \b true iff the input is an array whose keys are numeric, sequential, and zero-based.
*/
function IsArrayKeyNumericSequentialZeroBased($InputArray)
{
if(!is_array($InputArray))
{
return false;
}
if(count($InputArray) <= 0)
{
return true;
}
return array_keys($InputArray) === range(0, count($InputArray) - 1);
}
গুহাত / সমস্যা
পূর্ণসংখ্যা কীগুলি
এই অ্যারেগুলির জন্য কীগুলি পূর্ণসংখ্যা :
array(0 => "b");
array(13 => "b");
array(-13 => "b"); // Negative integers are also integers.
array(0x1A => "b"); // Hexadecimal notation.
স্ট্রিং কী
এই অ্যারেগুলির জন্য কীগুলি স্ট্রিং :
array("fish and chips" => "b");
array("" => "b"); // An empty string is also a string.
array("stackoverflow_email@example.com" => "b"); // Strings may contain non-alphanumeric characters.
array("stack\t\"over\"\r\nflow's cool" => "b"); // Strings may contain special characters.
array('$tα€k↔øv∈rflöw⛄' => "b"); // Strings may contain all kinds of symbols.
array("functіon" => "b"); // You think this looks fine? Think again! (see https://stackoverflow.com/q/9246051/1402846)
array("ま말轉转ДŁ" => "b"); // How about Japanese/Korean/Chinese/Russian/Polish?
array("fi\x0sh" => "b"); // Strings may contain null characters.
array(file_get_contents("https://www.google.com/images/nav_logo114.png") => "b"); // Strings may even be binary!
স্ট্রিংয়ের মতো দেখতে পূর্ণসংখ্যা কীগুলি
আপনি যদি মনে করেন যে কীটি array("13" => "b")
একটি স্ট্রিং , আপনি ভুল । এখানে ডক থেকে :
বৈধ পূর্ণসংখ্যাযুক্ত স্ট্রিংগুলি পূর্ণসংখ্যার ধরণে ফেলে দেওয়া হবে। উদাহরণস্বরূপ কী "8" কী 8 টির নিচে সংরক্ষণ করা হবে অন্যদিকে "08" castালাই করা হবে না, কারণ এটি কোনও বৈধ দশমিক পূর্ণসংখ্যা নয়।
উদাহরণস্বরূপ, এই অ্যারেগুলির জন্য কীটি পূর্ণসংখ্যা :
array("13" => "b");
array("-13" => "b"); // Negative, ok.
তবে এই অ্যারেগুলির মূল কীটি হল স্ট্রিং :
array("13." => "b");
array("+13" => "b"); // Positive, not ok.
array("-013" => "b");
array("0x1A" => "b"); // Not converted to integers even though it's a valid hexadecimal number.
array("013" => "b"); // Not converted to integers even though it's a valid octal number.
array("18446744073709551616" => "b"); // Not converted to integers as it can't fit into a 64-bit integer.
কি আরো অনুযায়ী ডক ,
একটি পূর্ণসংখ্যার আকার প্ল্যাটফর্ম নির্ভর, যদিও সর্বাধিক প্রায় দুই বিলিয়ন মূল্য স্বাভাবিক মান (এটি 32 বিট স্বাক্ষরিত)। -৪-বিট প্ল্যাটফর্মগুলির উইন্ডোজ বাদে সাধারণত সর্বনিম্ন 9E18 এর মান থাকে, যা সর্বদা 32 বিট থাকে। পিএইচপি স্বাক্ষরবিহীন পূর্ণসংখ্যার সমর্থন করে না।
সুতরাং এই অ্যারের কীটি কোনও পূর্ণসংখ্যার হতে পারে বা নাও হতে পারে - এটি আপনার প্ল্যাটফর্মের উপর নির্ভর করে।
array("60000000000" => "b"); // Array key could be integer or string, it can fit into a 64-bit (but not 32-bit) integer.
এমনকি খারাপ, পিএইচপি হতে থাকে বগী যদি পূর্ণসংখ্যা 2 কাছে 31 = 2,147,483,648 সীমানা (দেখুন বাগ 51430 , বাগ 52899 )। উদাহরণস্বরূপ, আমার স্থানীয় পরিবেশে (উইন্ডোজ 7 এ এক্সএএমপিপি 1.7.7 এ পিএইচপি 5.3.8) var_dump(array("2147483647" => "b"))
দেয় , দেয়
array(1) {
[2147483647]=>
string(1) "b"
}
তবে কোডপ্যাডের এই লাইভ ডেমোতে (পিএইচপি 5.2.5 ), একই অভিব্যক্তি দেয়
array(1) {
["2147483647"]=>
string(1) "b"
}
সুতরাং কীটি একটি পরিবেশে একটি পূর্ণসংখ্যা তবে অন্যটিতে স্ট্রিং , যদিও 2147483647
বৈধ স্বাক্ষরিত 32-বিট পূর্ণসংখ্যা হয় ।