6
   $total_materials_cost = 0;
   array_walk_recursive($materials, function($item, $key) {
        if (in_array($key, array('id'))) {

                    (....)

                    $total = $material_price * $material['amount'];

                    $total_materials_cost += $total;
                }
            }
        }
    });
echo $total_materials_cost;

上記のコードで$total_materials_cost += $total;は、行でエラーが発生し、変数が未定義であると言われています-これは、関数内にいるためだと思いますか? しかし、どうすればこれをバイパス/回避できるので、変数に追加できますか?

4

1 に答える 1

16

use次のキーワードを使用します。

$total_materials_cost = 0;
array_walk_recursive($materials, function($item, $key) use(&$total_materials_cost) {
  if (in_array($key, array('id'))) {
    // (....)
    $total = $material_price * $material['amount'];
    $total_materials_cost += $total;
  }
});
echo $total_materials_cost;

参照 ( ) を渡して&、クロージャーの外側の変数を変更します。

于 2012-09-02T18:53:14.663 に答える