@ emanueledelgrande at email dot it
http://us.php.net/manual/en/language.types.type-juggling.php
(bool) or (boolean) is allowed for type casting a variable. No function like intval, etc but the functionality exists.
is_bool
(PHP 4, PHP 5)
is_bool — Determină dacă o variablă este un boolean
Parametri
-
var -
Variabila ce este evaluată.
Valorile întoarse
Întoarce TRUE dacă var este un boolean,
FALSE în caz contrar.
Exemple
Example #1 Exemple is_bool()
<?php
$a = false;
$b = 0;
// Deoarece $a este un boolean, funcția va întoarce true
if (is_bool($a) === true) {
echo "Da, acesta este un boolean";
}
// Deoarece $b nu este un boolean, funcția va întoarce false
if (is_bool($b) === false) {
echo "Nu, acesta nu este un boolean";
}
?>
Vedeți de asemenea
- is_float() - Determină dacă tipul unei variabile este float
- is_int() - Determină dacă tipul unei variabile este integer
- is_string() - Determină dacă tipul variabilei este string
- is_object() - Determină dacă o variabilă este un obiect
- is_array() - Determină dacă o variabilă este un array
kevin at metalaxe dot com ¶
5 years ago
moty66 at gmail dot com ¶
3 years ago
Here is the function which I use when pasring boolean variables from config files
<?php
function boolVal($var) {
switch ($var) {
case $var == true:
case $var == 1:
// case $var == '1': // no need for this, because we used
// $val == 1 not $var === 1
case strtolower($var) == 'true':
case strtolower($var) == 'on':
case strtolower($var) == 'yes':
case strtolower($var) == 'y':
$out = 1;
break;
default: $out = 0;
}
return $out;
}
?>
I am woundering why php does not have a function to do this
Motaz Abuthiab
rh at richardhoward dot net ¶
8 years ago
punkpuke is wrong here; what he means to say is that empty($x) is the opposite of (bool)$x. is_bool($x) returns true where $x === false.
emanueledelgrande at email dot it ¶
6 years ago
I think there's a hole in the PHP typecasting methods:
you have the (int) function, the (float) function and the (string) function, but no function to force a string variable into the boolean type.
It's obvious that forcing unconditionally the type of variables into arrays and objects is inappropriate, but boolean type is the most basic one for each programming language, that's why I guessed that a (bool) function already existed.
Moreover, with the increasing trend of RSS data streaming, the parsing of an XML string into an object often requires to typecast as boolean values the content of XML tags, normally returned as string by the object method get_content().
I wrote the following function, which also uses a "native PHP style" error message:
<?php
// strings tyecasting as boolean values:
function bool($var) {
switch (strtolower($var)) {
case ("true"):
return true;
break;
case ("false"):
return false;
break;
default:
die("<br />\n<b>Warning:</b> Invalid argument supplied for ".__FUNCTION__." function in <b>".__FILE__."</b> on line <b>".__LINE__."</b>: the argument can contain only 'true' or 'false' values as a string.<br />\n");
}
}
?>
Here it is a small example:
<?php
$xmlResponse = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
$xmlResponse .= "<Result>";
$xmlResponse .= "<AuthError>false</AuthError>";
$xmlResponse .= "<TransferStatus>true</TransferStatus>";
$xmlResponse .= "</Result>";
if (! $responseDoc = domxml_open_mem($xmlResponse, DOMXML_LOAD_PARSING, $XmlParsingError)) {
echo "Error while parsing the XML string:<br />".print_r($XmlParsingError, TRUE);
} else {
$ResultNode = $responseDoc->get_elements_by_tagname('Result');
$AuthError = $ResultNode[0]->get_elements_by_tagname('AuthError');
$auth_error = bool($AuthError[0]->get_content());
$TransferStatus = $ResultNode[0]->get_elements_by_tagname('TransferStatus');
$transfer_status = bool($TransferStatus[0]->get_content());
if (! $auth_error) { echo "Auth OK<br />"; } else { echo "Auth error<br />"; }
if ($transfer_status) { echo "Transfer OK<br />"; } else { echo "Transfer error<br />"; }
}
?>
It would be useful this function to be implemented in the core of PHP5.
vincent at lycoops dot be ¶
1 year ago
For those of you who think that micro-optimization is important:
It's quicker to strictly compare a value to TRUE and FALSE, than using is_bool(), because it's a function.
<?php
if (is_bool($var)) { // 100% of time
}
if ($var === true || $var === false) { // 50% of time, if $var is true and 75% of time if $var is false.
}
?>
Spektrum ¶
1 year ago
If you want to convert a string representation of a boolean ,like "yes", "on", "true", "false",etc..., to an actual boolean, you can try this:
<?php
$myString = "On";
$b = filter_var($myString, FILTER_VALIDATE_BOOLEAN);
?>
This will return TRUE for "1", "true", "on" and "yes". Returns FALSE otherwise.
sam+nospam at samuellevy dot com ¶
4 years ago
Just another little function which doesn't exist yet, but I find mighty useful, especially when working with AJAX and APIs.
<?php
/** Checks a variable to see if it should be considered a boolean true or false.
* Also takes into account some text-based representations of true of false,
* such as 'false','N','yes','on','off', etc.
* @author Samuel Levy <sam+nospam@samuellevy.com>
* @param mixed $in The variable to check
* @param bool $strict If set to false, consider everything that is not false to
* be true.
* @return bool The boolean equivalent or null
*/
function boolval($in, $strict=false) {
$out = null;
// if not strict, we only have to check if something is false
if (in_array($in,array('false', 'False', 'FALSE', 'no', 'No', 'n', 'N', '0', 'off',
'Off', 'OFF', false, 0, null), true)) {
$out = false;
} else if ($strict) {
// if strict, check the equivalent true values
if (in_array($in,array('true', 'True', 'TRUE', 'yes', 'Yes', 'y', 'Y', '1',
'on', 'On', 'ON', true, 1), true)) {
$out = true;
}
} else {
// not strict? let the regular php bool check figure it out (will
// largely default to true)
$out = ($in?true:false);
}
return $out;
}
?>
It may be pretty inefficient, but it does the job.
bb at kingdom dot cjb dot net ¶
5 years ago
@ emmanuel del grande
You don't need to break when you return...
function bool($var) {
switch (strtolower($var)) {
case ("true"): return true;
case ("false"): return false;
default: die("whatever you want it to tell");
}
}
