is_bool()
(PHP 4, PHP 5, PHP 7)
检测变量是否是布尔型
描述
is_bool(mixed $var): bool
如果$var是boolean则返回TRUE
。
Example #1is_bool()示例
<?php $a = false; $b = 0; // 因为 $a 是布尔型,所以结果为真 if (is_bool($a)) { print "Yes, this is a boolean"; } // 因为 $b 不是布尔型,所以结果为非真 if (is_bool($b)) { print "Yes, this is a boolean"; } ?>
参见is_array()、is_float()、is_int()、is_integer()、is_string()和is_object()。
It should be stated that this function returns true if the _type_ of it's argument is boolean. It does not convert or coerce the value to a boolean type, not sure why so many comments focus on how to do this. However, if you arrived here looking for a solution to convert a value to a boolean type, use this: to_bool($x) { return (bool)$x; }
The function Michael Smith published doesn't do the work as it should. To check if a variable is boolean is one thing, to evaluate if the value of a variable represents a boolean condition (true or false) is another. Here a simple function that checks the status of the received variable in regards to boolean equivalencies (case insensitive). <?php /** * Check "Booleanic" Conditions :) * * @param [mixed] $variable Can be anything (string, bol, integer, etc.) * @return [boolean] Returns TRUE for "1", "true", "on" and "yes" * Returns FALSE for "0", "false", "off" and "no" * Returns NULL otherwise. */ function is_enabled($variable) { if (!isset($variable)) return null; return filter_var($variable, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); } ?> Of course, it is a simplistic approach, but for the majority of cases it will do the job right. And, just to put thing in the right perspective, here's a real function that does what Phill disclosed: <?php /** * Convert $variable to boolean (adapted from Phill answer) * * @param [mixed] $variable Can be anything * @return [boolean] Returns the booelan equivalent to $variable based on Zend Enegine interpretation */ function to_bool($variable) { return (bool)$variable; } ?> I hope it helps someone. Happy coding.
The function in the last comment also converts the string 'false' to a true boolean. Here's a function that does what I think was intended: <?php function toBool($var) { if (!is_string($var)) return (bool) $var; switch (strtolower($var)) { case '1': case 'true': case 'on': case 'yes': case 'y': return true; default: return false; } }