我正在尝试在循环时修改数组并增加某些值。
$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
答案 0 :(得分:1)
你在循环中做的事情是未定义的:
$value['amt'] = $value['amt']++;
结果取决于首先评估的内容。在这种情况下,$value['amt']++
似乎首先进行评估,然后再次分配给$value['amt']
;增量的副作用就会丢失。
另一方面,以下声明将按预期工作:
$value['amt']++;