149 lines
2.9 KiB
Plaintext
149 lines
2.9 KiB
Plaintext
|
Ternary operator
|
||
|
-----
|
||
|
<?php
|
||
|
|
||
|
// ternary
|
||
|
$a ? $b : $c;
|
||
|
$a ?: $c;
|
||
|
|
||
|
// precedence
|
||
|
$a ? $b : $c ? $d : $e;
|
||
|
$a ? $b : ($c ? $d : $e);
|
||
|
|
||
|
// null coalesce
|
||
|
$a ?? $b;
|
||
|
$a ?? $b ?? $c;
|
||
|
$a ?? $b ? $c : $d;
|
||
|
$a && $b ?? $c;
|
||
|
-----
|
||
|
array(
|
||
|
0: Expr_Ternary(
|
||
|
cond: Expr_Variable(
|
||
|
name: a
|
||
|
comments: array(
|
||
|
0: // ternary
|
||
|
)
|
||
|
)
|
||
|
if: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
else: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
comments: array(
|
||
|
0: // ternary
|
||
|
)
|
||
|
)
|
||
|
1: Expr_Ternary(
|
||
|
cond: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
if: null
|
||
|
else: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
)
|
||
|
2: Expr_Ternary(
|
||
|
cond: Expr_Ternary(
|
||
|
cond: Expr_Variable(
|
||
|
name: a
|
||
|
comments: array(
|
||
|
0: // precedence
|
||
|
)
|
||
|
)
|
||
|
if: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
else: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
comments: array(
|
||
|
0: // precedence
|
||
|
)
|
||
|
)
|
||
|
if: Expr_Variable(
|
||
|
name: d
|
||
|
)
|
||
|
else: Expr_Variable(
|
||
|
name: e
|
||
|
)
|
||
|
comments: array(
|
||
|
0: // precedence
|
||
|
)
|
||
|
)
|
||
|
3: Expr_Ternary(
|
||
|
cond: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
if: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
else: Expr_Ternary(
|
||
|
cond: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
if: Expr_Variable(
|
||
|
name: d
|
||
|
)
|
||
|
else: Expr_Variable(
|
||
|
name: e
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
4: Expr_BinaryOp_Coalesce(
|
||
|
left: Expr_Variable(
|
||
|
name: a
|
||
|
comments: array(
|
||
|
0: // null coalesce
|
||
|
)
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
comments: array(
|
||
|
0: // null coalesce
|
||
|
)
|
||
|
)
|
||
|
5: Expr_BinaryOp_Coalesce(
|
||
|
left: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
right: Expr_BinaryOp_Coalesce(
|
||
|
left: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
6: Expr_Ternary(
|
||
|
cond: Expr_BinaryOp_Coalesce(
|
||
|
left: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
)
|
||
|
if: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
else: Expr_Variable(
|
||
|
name: d
|
||
|
)
|
||
|
)
|
||
|
7: Expr_BinaryOp_Coalesce(
|
||
|
left: Expr_BinaryOp_BooleanAnd(
|
||
|
left: Expr_Variable(
|
||
|
name: a
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: b
|
||
|
)
|
||
|
)
|
||
|
right: Expr_Variable(
|
||
|
name: c
|
||
|
)
|
||
|
)
|
||
|
)
|