PHP 数组引用,修改数组值


PHP Array reference, modifying array values

我正在尝试在循环遍历数组时修改数组并增加某些值。

     $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']++;