首页 > 解决方案 > 使用三元运算符和引用值的 foreach 中的意外行为

问题描述

为什么以下代码在 PHP 5.5.* 和 PHP 7.* 中有不同的输出:

<?php
$foo = ['bar'=>[['item1'=>'value1']]];
foreach ($foo['bar'] ?: [] as $k => &$arr1) {
  $arr1['item1'] = 'value2';
}

var_dump($foo);

在 PHP 5 中, 的值$foo['bar'][0]['item1']会被 修改value2,但在 PHP 7 中不会。

标签: phpforeachconditional-operator

解决方案


推荐阅读