How exactly does if($variable) work?

Php

Php Problem Overview


> 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 couldn't find any results about this, anywhere, so obviously I'll look stupid posting this.

Php Solutions


Solution 1 - Php

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.

Solution 2 - Php

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.

Solution 3 - Php

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.

Solution 4 - Php

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...

Solution 5 - Php

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.

Solution 6 - Php

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.

Solution 7 - Php

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.

Solution 8 - Php

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNistoView Question on Stackoverflow
Solution 1 - PhpMichael BerkowskiView Answer on Stackoverflow
Solution 2 - PhpMatView Answer on Stackoverflow
Solution 3 - PhpkevtroutView Answer on Stackoverflow
Solution 4 - PhpdecezeView Answer on Stackoverflow
Solution 5 - PhpkieranView Answer on Stackoverflow
Solution 6 - PhpCupsView Answer on Stackoverflow
Solution 7 - PhpMoarCodePlzView Answer on Stackoverflow
Solution 8 - PhpjeniView Answer on Stackoverflow