在 foreach() 循环头部解构数组数据时,可以将新元素分配给原始输入数组吗?

问题描述 投票:0回答:1

自 PHP7.1 起,

foreach()
表达式可以实现数组解构作为解包行值并进行个性化变量分配以供以后使用的方式。

foreach()
循环的头/签名中使用数组解构时,是否可以声明新元素而不仅仅是访问?

例如:

$array = [
    ['foo' => 'a', 'bar' => 1],
    ['foo' => 'b', 'bar' => 2],
];

我可以使用键

new
将新元素附加到原始数组的每一行吗?

php arrays foreach append destructuring
1个回答
1
投票

是的,数据可以直接附加到

foreach()
头部的原始输入数组的行中。

详情:

  • 新元素必须通过引用声明(该值必须是前面带有
    &
    的变量)——否则没有指示修改原始数组。
  • 如果以后没有给引用变量赋值,则默认值为
    null

代码:(演示

$array = [
    ['foo' => 'a', 'bar' => 1],
    ['foo' => 'b', 'bar' => 2],
];

foreach ($array as ['new' => &$x, 'bar' => $x]);

var_export($array);

输出:

array (
  0 => 
  array (
    'foo' => 'a',
    'bar' => 1,
    'new' => 1,
  ),
  1 => 
  array (
    'foo' => 'b',
    'bar' => 2,
    'new' => 2,
  ),
)

这是另一个使用此技术并通过另一个循环分配参考值的答案

© www.soinside.com 2019 - 2024. All rights reserved.