উপরের অংশটি সঠিক যদি আমরা ধরে নিই যে অ্যারেগুলিতে কেবল স্ট্রিং থাকতে পারে তবে অ্যারেতে অন্যান্য অ্যারেও থাকতে পারে। এছাড়াও ইন_আরে () ফাংশনটি $ সুইয়ের জন্য একটি অ্যারে গ্রহণ করতে পারে, সুতরাং স্ট্র্টলওয়ার ($ সুই) কাজ করছে না যদি $ সুই একটি অ্যারে হয় এবং অ্যারে_ম্যাপ ('স্ট্রোল্টওয়ার', $ খড়ের কাঁটা) কাজ করে না যদি $ খড়ের ছাঁটে অন্যটি থাকে অ্যারে, তবে "পিএইচপি সতর্কতা: স্ট্র্টলওয়ার () প্যারামিটার 1 টি স্ট্রিং, অ্যারে প্রদত্ত বলে প্রত্যাশা করে" এর ফলাফল করবে।
উদাহরণ:
$needle = array('p', 'H');
$haystack = array(array('p', 'H'), 'U');
সুতরাং আমি কেস-সংবেদনশীল এবং কেস-সংবেদনশীল ইন_আরএ () চেকগুলি তৈরি করতে রিলেভেন্ট পদ্ধতিগুলির সাহায্যে একটি সহায়ক শ্রেণি তৈরি করেছি। আমি স্ট্র্টলওয়ার () এর পরিবর্তে এমবি_স্ট্রোলটার ()ও ব্যবহার করছি, যাতে অন্যান্য এনকোডিংগুলি ব্যবহার করা যায়। কোডটি এখানে:
class StringHelper {
public static function toLower($string, $encoding = 'UTF-8')
{
return mb_strtolower($string, $encoding);
}
/**
* Digs into all levels of an array and converts all string values to lowercase
*/
public static function arrayToLower($array)
{
foreach ($array as &$value) {
switch (true) {
case is_string($value):
$value = self::toLower($value);
break;
case is_array($value):
$value = self::arrayToLower($value);
break;
}
}
return $array;
}
/**
* Works like the built-in PHP in_array() function — Checks if a value exists in an array, but
* gives the option to choose how the comparison is done - case-sensitive or case-insensitive
*/
public static function inArray($needle, $haystack, $case = 'case-sensitive', $strict = false)
{
switch ($case) {
default:
case 'case-sensitive':
case 'cs':
return in_array($needle, $haystack, $strict);
break;
case 'case-insensitive':
case 'ci':
if (is_array($needle)) {
return in_array(self::arrayToLower($needle), self::arrayToLower($haystack), $strict);
} else {
return in_array(self::toLower($needle), self::arrayToLower($haystack), $strict);
}
break;
}
}
}