小编fei*_*iny的帖子

PHP - foreach 因空合并运算符而丢失引用

Q1:我认为??在以下情况下将不会执行任何操作:

$a = [1, 2];
foreach ($a ?? [] as &$v) {
    $v++;
}
var_dump($a);
Run Code Online (Sandbox Code Playgroud)

但为什么?

array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
Run Code Online (Sandbox Code Playgroud)

Q2:这更奇怪:

foreach ($a = [1, 2] as &$v) {
    $v++;
}
var_dump($a);
// output
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
Run Code Online (Sandbox Code Playgroud)

我的想法:我认为表达式不可引用,但foreach捕获错误或以某种方式然后复制。有效的参考资料:

$a = 1;
$c = &$a;
Run Code Online (Sandbox Code Playgroud)

不工作:

$a = 1;
$c = &($a);
$c = &($a ?? []);
$c = &($a + 1);
Run Code Online (Sandbox Code Playgroud)

??复印吗?我只是不想用 if 为 null 来包装foreach, …

php reference null-coalescing-operator

9
推荐指数
1
解决办法
1228
查看次数

标签 统计

null-coalescing-operator ×1

php ×1

reference ×1