?: Elvis Operator
About 1 min
?:
Elvis Operator
Returns the right operand if the left operand is falsy (expression)
Description
The Elvis Operator is a little like a conditional where the result of the operation is the first non-falsy value from left to right.
A falsy value is any of the following:
- an unset / undefined variable
- any value with a
null
data type - a
str
or generic with the valuefalse
,null
,0
,no
,off
,fail
,failed
, ordisabled
- a number (
num
,float
orint
) with the value0
- an empty object or zero length array
- and, of course, a boolean with the value
false
Examples
Assign with a default value
» $foo = $bar ?: "baz"
If $bar
is falsy, then the value of $foo
will be "baz".
Multiple elvis operators
» $unset_variable ?: null ?: false ?: "foobar"
foobar
Detail
Whats in a name?
Wikipedia explains this best where it says:
The name "Elvis operator" refers to the fact that when its common notation,
?:
, is viewed sideways, it resembles an emoticon of Elvis Presley with his signature hairstyle.
See Also
- Error String (
err
): Print a line to the stderr - Expressions (
expr
): Expressions: mathematical, string comparisons, logical operators - Operators And Tokens: All supported operators and tokens
- Output String (
out
): Print a string to the stdout with a trailing new line character - Pipe Fail (
trypipe
): Checks for non-zero exits of each function in a pipeline - Pipeline: Overview of what a "pipeline" is
- Schedulers: Overview of the different schedulers (or 'run modes') in Murex
- Try Block (
try
): Handles non-zero exits inside a block of code &&
And Logical Operator: Continues next operation if previous operation passes??
Null Coalescing Operator: Returns the right operand if the left operand is empty / undefined (expression)?
stderr Pipe: Pipes stderr from the left hand command to stdin of the right hand command (DEPRECATED)||
Or Logical Operator: Continues next operation only if previous operation fails- null: null function. Similar to /dev/null
This document was generated from gen/expr/elvis-op_doc.yaml.