Reputation: 4622
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.
Upvotes: 0
Views: 1412
Reputation: 1979
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';
}
isset($_SESSION['selectedItemIDs'])
=> it will check is this parameter is set or not which is correct.
$_SESSION['selectedItemIDs'] !== ''
=> this will exactly compare that your parameter type is not '' but here i guess your selectedItemIDs is array so it let you go inside
Upvotes: 0
Reputation: 354
You can check the count of this array.
if (isset($_SESSION['selectedItemIDs']) && count($_SESSION['selectedItemIDs']) > 0) {
// update the selections in a database
} else {
// nothing selection so just record this in a variable
$selectedItems = 'no selected items were made';
}
Upvotes: -1
Reputation: 2924
$_SESSION['selectedItemIDs'] = array();
this variable is already set, but is empty.
isset($_SESSION['selectedItemIDs'])
check if variable exists, even if it's nothing in.
To check if there is anything just use
empty($_SESSION['selectedItemIDs']);
Upvotes: 0
Reputation: 4166
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 :
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';
}
Upvotes: 7