我正在尝试在循环遍历数组时修改数组并增加某些值。
$data = ['traits' => [[['amt' => 1]]]];
var_dump($data['traits']);
foreach ($data['traits'] as $key => &$index) {
foreach ($index as $key => &$value) {
$value['amt'] = $value['amt']++; // This should increment
if (in_array($key, $input)) {
$i++;
$insert["field_".$i] = $key."_1";
}
}
}
var_dump($data['traits']); // SAME AS PREVIOUS VAR_DUMP
你在循环中执行的操作是未定义的:
$value['amt'] = $value['amt']++;
其结果取决于首先评估的内容。在这种情况下,似乎首先评估$value['amt']++
,然后再次分配给$value['amt']
;增量的副作用已丢失。
另一方面,以下语句将按预期工作:
$value['amt']++;