I am using PHP’s null coalescing operator described by http://php.net/manual/en/migration70.new-features.php.
Null coalescing operator ΒΆ The null coalescing operator (??) has been added as syntactic sugar for the common case of needing to use a ternary in conjunction with isset(). It returns its first operand if it exists and is not NULL; otherwise it returns its second operand. <?php // Fetches the value of $_GET['user'] and returns 'nobody' // if it does not exist. $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // Coalescing can be chained: this will return the first // defined value out of $_GET['user'], $_POST['user'], and // 'nobody'. $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'; ?>
I noticed the following doesn’t produce my expected results which was to add a new phone
index to $params
whose value is “default”.
$params=['address'=>'123 main street']; $params['phone']??'default';
Why not?
Advertisement
Answer
You don’t add anything to params. Your given code simply generates an unused return value:
$params['phone'] ?? 'default'; // returns phone number or "default", but is unused
Thus, you will still have to set it:
$params['phone'] = $params['phone'] ?? 'default';