rfc:list_default_value
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:list_default_value [2015/11/09 13:22] – reeze | rfc:list_default_value [2017/09/22 13:28] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== PHP RFC: Default Value in List Syntax ====== | + | ====== PHP RFC: Default Value in List Assignment |
* Version: 0.1 | * Version: 0.1 | ||
* Date: 2015-11-08 | * Date: 2015-11-08 | ||
* Author: Reeze Xia, reeze@php.net | * Author: Reeze Xia, reeze@php.net | ||
- | * Status: | + | * Status: |
* First Published at: http:// | * First Published at: http:// | ||
Line 9: | Line 9: | ||
We could destruct variables from an array with [[http:// | We could destruct variables from an array with [[http:// | ||
- | For the similar | + | For the similar |
Some clever users figured out some workaround like this [[http:// | Some clever users figured out some workaround like this [[http:// | ||
Line 15: | Line 15: | ||
===== Proposal ===== | ===== Proposal ===== | ||
- | Support new syntax to set default | + | Support new syntax to set default |
<code php> | <code php> | ||
+ | // basic syntax | ||
list($a, $b=' | list($a, $b=' | ||
list($a, $b=' | list($a, $b=' | ||
+ | // 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() | ||
+ | { | ||
+ | return " | ||
+ | } | ||
$name = ' | $name = ' | ||
- | list($a, $b=$name." | + | list($a=say_hello(), $b=$name." |
list($a, list($b=1, $c=2)) = [1]; // a = 1, b = 1, c = 2 | list($a, list($b=1, $c=2)) = [1]; // a = 1, b = 1, c = 2 | ||
+ | |||
</ | </ | ||
- | The previous | + | The assignment could be considered as a shortcut for: |
<code php> | <code php> | ||
+ | |||
+ | list($a, $b=' | ||
+ | |||
+ | // equals | ||
+ | |||
$a = $arr[0]; | $a = $arr[0]; | ||
$b = isset($arr[1]) ? $arr[1] : ' | $b = isset($arr[1]) ? $arr[1] : ' | ||
Line 71: | Line 95: | ||
===== RFC Impact ===== | ===== RFC Impact ===== | ||
- | ==== To SAPIs ==== | ||
- | No impact | ||
- | |||
- | ==== To Existing Extensions ==== | ||
- | No impact | ||
==== To Opcache ==== | ==== To Opcache ==== | ||
I am working on opcache compatibility. | I am working on opcache compatibility. | ||
- | |||
- | ==== New Constants ==== | ||
- | None | ||
- | |||
- | ==== php.ini Defaults ==== | ||
- | None | ||
===== Open Issues ===== | ===== Open Issues ===== | ||
None for now | None for now | ||
- | |||
- | ===== Unaffected PHP Functionality ===== | ||
- | No BC break | ||
===== Future Scope ===== | ===== Future Scope ===== | ||
- | |||
===== Proposed Voting Choices ===== | ===== Proposed Voting Choices ===== |
rfc/list_default_value.1447075361.txt.gz · Last modified: 2017/09/22 13:28 (external edit)