wogsland
wogsland

Reputation: 9508

Null coalesce operator with casting

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

Upvotes: 13

Views: 2015

Answers (1)

trincot
trincot

Reputation: 350167

The (int) cast gets precedence over the ?? operator, so use brackets:

$id = (int) ($_GET['id'] ?? 0);

Upvotes: 21

Related Questions