আপনি যা জিজ্ঞাসা করছেন তার মতো স্ট্রিংগুলি পরিচালনা করার জন্য আমার সম্প্রতি একটি "আলগা" বুলিয়ান রূপান্তর ফাংশনটির প্রয়োজন ছিল (অন্যান্য জিনিসের মধ্যে)। আমি কয়েকটি ভিন্ন পদ্ধতির সন্ধান পেয়েছি এবং সেগুলি চালানোর জন্য পরীক্ষার ডেটার একটি বড় সেট নিয়ে এসেছি । কোনও কিছুই আমার প্রয়োজনের সাথে খাপ খায় না তাই আমি নিজের লেখা:
function loosely_cast_to_boolean($value) {
if(is_array($value) || $value instanceof Countable) {
return (boolean) count($value);
} else if(is_string($value) || is_object($value) && method_exists($value, '__toString')) {
$value = (string) $value;
// see http://www.php.net/manual/en/filter.filters.validate.php#108218
// see https://bugs.php.net/bug.php?id=49510
$filtered = filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if(!is_null($filtered)) {
return $filtered;
} else {
// "none" gets special treatment to be consistent with ini file behavior.
// see documentation in php.ini for more information, in part it says:
// "An empty string can be denoted by simply not writing anything after
// the equal sign, or by using the None keyword".
if(strtolower($value) === 'none') {
$value = '';
}
return (boolean) $value;
}
} else {
return (boolean) $value;
}
}
মনে রাখবেন যে বস্তুগুলির জন্য যা উভয়ই গণনাযোগ্য এবং স্ট্রিং-castালাইযোগ্য, সত্যতা নির্ধারণের জন্য এটি স্ট্রিংয়ের মানের চেয়ে বেশি গণনা করবে। এটি হ'ল যদি এটির মান নির্বিশেষে $object instanceof Countable
ফিরে আসবে ।(boolean) count($object)
(string) $object
আমি যে পরীক্ষামূলক ডেটা ব্যবহার করেছি তার আচরণের পাশাপাশি এখানে বেশ কয়েকটি অন্যান্য ফাংশনের ফলাফল দেখতে পারেন । এই সামান্য iframe থেকে ফলাফল স্কিম করা একরকম কঠিন, সুতরাং আপনি পরিবর্তে একটি সম্পূর্ণ পৃষ্ঠায় স্ক্রিপ্ট আউটপুট দেখতে পারেন (যে URL টি নথিভুক্ত তাই এটি চিরকালের জন্য কাজ না করে)। যদি সেই লিঙ্কগুলি কোনও দিন মারা যায় তবে আমি কোডটি পেস্টবিনেও রেখেছি ।
"সত্য হওয়া উচিত" এবং কোনটি না হওয়া উচিত তার মধ্যে লাইনটি বেশ স্বেচ্ছাসেবী; আমার ব্যবহৃত ডেটাগুলি আমার প্রয়োজন এবং নান্দনিক পছন্দগুলির উপর ভিত্তি করে শ্রেণিবদ্ধ করা হয়েছে, আপনার ভিন্ন হতে পারে।
isBoolean("")
মিথ্যা ফিরে আসা উচিত।