如何有条件设置PHP数组维度?简化数组赋值代码方案
PHP代码简化方案
原代码逻辑:
if($flag) { $data['record'] = $item['currentData']; } else { $data['record']['date'] = $item['currentData']; }
你尝试的$data['record'] + $flag && ['date'] = $item['currentData'];不符合PHP语法规则,无法直接运行。下面提供几种简洁的合法实现方式:
方式一:三元运算符直接执行赋值
$flag ? ($data['record'] = $item['currentData']) : ($data['record']['date'] = $item['currentData']);
这种写法完全等价于原逻辑,把分支判断压缩成一行代码,可读性也不错。
方式二:通过引用目标变量统一赋值
// 先获取要赋值的目标引用 $target = $flag ? &$data['record'] : &$data['record']['date']; // 统一赋值 $target = $item['currentData'];
适合需要多次对同一目标操作的场景,只需要修改一次目标变量即可。
方式三:保留原有record数据的合并写法(适用于$flag为false时)
如果$data['record']原本已有其他键值,且希望$flag为false时只更新date字段而不覆盖整个数组,可以用:
$data['record'] = $flag ? $item['currentData'] : array_merge($data['record'], ['date' => $item['currentData']]);
注意:如果$data['record']初始未定义,需要先确保它是数组,否则array_merge会报错。
内容的提问来源于stack exchange,提问作者Darpek
相关产品推荐
相关产品推荐

