user982124 user982124 - 1 month ago 7
PHP Question

PHP Checking if Array is empty logic not working

I have a page that loads and creates an empty array:

$_SESSION['selectedItemIDs'] = array();


If the user hasn't added any selections that get stored in the array I then check the array and branch accordingly, but there appears to be some error in my logic/syntax that is failing here.

Here's where I test if the $_SESSION['selectedItemIDs'] is set but empty:

if (isset($_SESSION['selectedItemIDs']) && $_SESSION['selectedItemIDs'] !== '') {
// update the selections in a database
} else {
// nothing selection so just record this in a variable
$selectedItems = 'no selected items were made';
}


When testing this with no selections if I print the $_SESSION['selectedItemIDs'] array I get this:

[selectedItemIDs] => Array
(
)


however the $selectedItems variable is not being set - it's evaluating the if test as true when I would expect it to be false, but I'm obviously misunderstanding something here.

Answer

Use empty() function.

empty() - it will return true if the variable is an empty string, false, array(), NULL, “0?, 0, and an unset variable.

Syntax

empty(var_name)

Return value

FALSE if var_name has a non-empty and non-zero value.

Value Type :

Boolean

List of empty things :

  • "0" (0 as a string)
  • 0 (0 as an integer)
  • "" (an empty string)
  • NULL
  • FALSE
  • "" (an empty string)
  • array() (an empty array)
  • $var_name; (a variable declared but without a value in a class)

Code

if (!empty($_SESSION['selectedItemIDs']) ) {
    // update the selections in a database
} else {
    // nothing selection so just record this in a variable
$selectedItems = 'no selected items were made';
}