In Python one can do:
foo = {} assert foo.get('bar', 'baz') == 'baz' In PHP one can go for a trinary operator as in:
$foo = array(); assert( (isset($foo['bar'])) ? $foo['bar'] : 'baz' == 'baz' ); I am looking for a golf version. Can I do it shorter/better in PHP?
assert($foo['bar'] ?? 'baz' == 'baz'); It seems that Null coalescing operator ?? is worth checking out today.
found in the comments below (+1)
Advantage of PHP ArrayLess Code: We don't need to define multiple variables. Easy to traverse: By the help of single loop, we can traverse all the elements of an array. Sorting: We can sort the elements of array.
There are no dictionaries in php, but PHP array's can behave similarly to dictionaries in other languages because they have both an index and a key (in contrast to Dictionaries in other languages, which only have keys and no index).
Associative arrays - Arrays with named keys.
1 Answer. Show activity on this post. Variables that are declared without a value and undefined/undeclared variables are null by default.
Time passes and PHP is evolving. PHP 7 now supports the null coalescing operator, ??:
// 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 just came up with this little helper function:
function get(&$var, $default=null) { return isset($var) ? $var : $default; } Not only does this work for dictionaries, but for all kind of variables:
$test = array('foo'=>'bar'); get($test['foo'],'nope'); // bar get($test['baz'],'nope'); // nope get($test['spam']['eggs'],'nope'); // nope get($undefined,'nope'); // nope Passing a previously undefined variable per reference doesn't cause a NOTICE error. Instead, passing $var by reference will define it and set it to null. The default value will also be returned if the passed variable is null. Also note the implicitly generated array in the spam/eggs example:
json_encode($test); // {"foo":"bar","baz":null,"spam":{"eggs":null}} $undefined===null; // true (got defined by passing it to get) isset($undefined) // false get($undefined,'nope'); // nope Note that even though $var is passed by reference, the result of get($var) will be a copy of $var, not a reference. I hope this helps!
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