开发者

How exactly does if($variable) work? [duplicate]

This question already has answers here: Closed 11 years ago.

Possible Duplicate:

Regarding if statements in PHP

In PHP scripts - what does an if statement like this check for?

<?php if($variable){ // code to be executed } ?>  

I've seen it used in scripts several times, and now I really want to know what it "looks for". It's not missing anything; it's just a plain variable inside an if statement... I开发者_StackOverflow中文版 couldn't find any results about this, anywhere, so obviously I'll look stupid posting this.


The construct if ($variable) tests to see if $variable evaluates to any "truthy" value. It can be a boolean TRUE, or a non-empty, non-NULL value, or non-zero number. Have a look at the list of boolean evaluations in the PHP docs.

From the PHP documentation:

var_dump((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)

Note however that if ($variable) is not appropriate to use when testing if a variable or array key has been initialized. If it the variable or array key does not yet exist, this would result in an E_NOTICE Undefined variable $variable.


If converts $variable to a boolean, and acts according to the result of that conversion.

See the boolean docs for further information.

To explicitly convert a value to boolean, use the (bool) or (boolean) casts. However, in most cases the cast is unnecessary, since a value will be automatically converted if an operator, function or control structure requires a boolean argument.


The following list explains what is considered to evaluate to false in PHP:

  • the boolean FALSE itself
  • the integer 0 (zero)
  • the float 0.0 (zero)
  • the empty string, and the string "0"
  • an array with zero elements
  • an object with zero member variables (PHP 4 only)
  • the special type NULL (including unset variables)
  • SimpleXML objects created from empty tags

Every other value is considered TRUE (including any resource).

source: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

In your question, a variable is evaluated inside the if() statement. If the variable is unset, it will evaluate to false according to the list above. If it is set, or has a value, it will evaluate to true, therefore executing the code inside the if() branch.


It checks whether $variable evaluates to true. There are a couple of normal values that evaluate to true, see the PHP type comparison tables.

if ( ) can contain any expression that ultimately evaluates to true or false.

if (true)                  // very direct
if (true == true)          // true == true evaluates to true
if (true || true && true)  // boils down to true

$foo = true;
if ($foo)                  // direct true
if ($foo == true)          // you get the idea...


Any of these are considered to be false (so that //code to be executed would not run)

  • the boolean FALSE itself
  • the integer 0 (zero)
  • the float 0.0 (zero)
  • the empty string, and the string "0"
  • an array with zero elements
  • an object with zero member variables (PHP 4 only)
  • the special type NULL (including unset variables)
  • SimpleXML objects created from empty tags

All other values should be true. More info at the PHP Booleans manual.


Try looking at this old extended "php truth table" to get your head around all the various potholes waiting to burst your tyres. When starting out be as explicit as you can with any comparison operator that fork your code. Try and test against things being identical rather that equal to.


It depends entirely on the value type of the object that you are checking against. In PHP each object type has a certain value that will return false if checked against. The explanation of these can be found here: http://php.net/manual/en/language.types.boolean.php Some values that evaluate to false are

float: 0.0

int: 0

boolean: false

string: ''

array: [] (empty)

object: object has 0 properties / is empty

NULL

Its a bit different from most other languages but once you get used to it it can be very handy. This is why you may see a lot of statements such as

$result = mysqli_multi_query($query) or die('Could not execute query');

A function in PHP need only return a value type that evaluates to false for something like this to work. The OR operator in PHP will not evaluated its second argument IF the first argument is true (as regardless of the second argument's output, the or statement will still pass) and lines like this will attempt to call a query and assign the result to $result. If the query fails and the function returns a false value, then the thread is killed and 'Could not execute query' is printed.


if a function successfully runs (true) or a variable exists (true) boolean the if statement will continue. Otherwise it will be ignored

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜