I have upgraded to PHP 7 and started using the null coalesce operator to convert things like
$email = isset($_SESSION['email']) ? $_SESSION['email'] : '';
to
$email = $_SESSION['email'] ?? '';
but I can't figure out how to do this if I am casting as well. For example, the for the old statement
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
I would think something like
$id = (int) $_GET['id'] ?? 0;
should work, but it doesn't appear to in the sense that, if $_GET['id']
is not set, $id
resolves to 0
but I get the Notice
Notice: Undefined index: id in test.php on line 2
In PHP 7, a new feature, null coalescing operator (??) has been introduced. It is used to replace the ternary operation in conjunction with isset() function. The Null coalescing operator returns its first operand if it exists and is not NULL; otherwise it returns its second operand.
Undefined Index in PHP is a Notice generated by the language. The simplest way to ignore such a notice is to ask PHP to stop generating such notices. You can either add a small line of code at the top of the PHP page or edit the field error_reporting in the php. ini file.
The error can be avoided by using the isset() function. This function will check whether the index variables are assigned a value or not, before using them.
The (int)
cast gets precedence over the ??
operator, so use brackets:
$id = (int) ($_GET['id'] ?? 0);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With