在 php 中使用 foreach 循环构建关联数组时,若在循环内重复赋值给同一变量,会导致前序数据被覆盖;正确做法是预先初始化数组,再在循环中逐项追加键值对。
当你写如下代码时:
foreach ($reviewers as $login_name => $common_name) {
$allowed_values = [
'' => 'All',
$login_name => $common_name,
];
}
每次迭代都会重新声明并覆盖整个 $allowed_values 数组,最终只保留最后一次循环的两个元素(空键 ‘All’ 和最后一个 $login_name => $common_name),因此无法收集全部评审员数据。
✅ 正确写法是:先初始化基础结构,再在循环中扩展:
// 初始化包含默认选项的数组
$allowed_values = ['' => 'All'];
// 遍历 reviewers,逐个添加键值对
foreach ($reviewers as $login_name => $common_name) {
$allowed_values[$login_name] = $common_name;
}
这样,$allowed_values 会累积所有评审员条目,例如: