Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
rfc:list_default_value [2015/11/09 13:44] – reeze | rfc:list_default_value [2015/11/10 03:22] – reeze |
---|
We could destruct variables from an array with [[http://php.net/list| list constuct]], it may be nested or a simple array. But there is no guarantee that the array can fulfill all variables, it will be simple assigned with null with notice error (not good). We will need several redundant code to handle the possible cases if we want to check it and assign it with default values. | We could destruct variables from an array with [[http://php.net/list| list constuct]], it may be nested or a simple array. But there is no guarantee that the array can fulfill all variables, it will be simple assigned with null with notice error (not good). We will need several redundant code to handle the possible cases if we want to check it and assign it with default values. |
| |
For the similar purpose we introduced [[http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison|Null coalesce "??"]] and [[http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary|Ternary Operator "?:"]] to help write clean code. | For the similar reason we introduced [[http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison|Null coalesce "??"]] and [[http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary|Ternary Operator "?:"]] to help write clean code. |
| |
Some clever users figured out some workaround like this [[http://php.net/manual/en/function.list.php#113189|User contributed notes]]. But that is not good enough and ugly. | Some clever users figured out some workaround like this [[http://php.net/manual/en/function.list.php#113189|User contributed notes]]. But that is not good enough and ugly. |
| |
<code php> | <code php> |
| // basic syntax |
list($a, $b='default') = [1]; // a = 1, b = 'default' | list($a, $b='default') = [1]; // a = 1, b = 'default' |
list($a, $b='default') = [1, 2]; // a = 1, b = 2 | list($a, $b='default') = [1, 2]; // a = 1, b = 2 |
| |
| // comparation |
| list($a, list($b=1, $c=2) = $arr; |
| // or we need to check it ourself |
| if (!isset($arr[1][0])) { |
| $arr[1][0] = 1; |
| } |
| if (!isset($arr[1][1])) { |
| $arr[1][0] = 2; |
| } |
| |
| list($a, list($b, $c)) = $arr; |
| |
| |
| // other examples |
function say_hello() | function say_hello() |
{ | { |