2012-09-02 40 views
4
$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;得到錯誤的功能,說變量未定義 - 我相信這是因爲我是一個函數裏面?但我怎麼可以繞過/爲此做一個解決方法,所以它增加了變量?array_walk_recursive,外面使用的變量在PHP

回答

10

使用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; 

傳遞一個參考(&)來改變所述封閉以外的變量。

+0

錯誤消失了,但$ total_materials_cost爲0,不添加 – Karem

+0

@Karem:對不起,錯過了。請看我更新的答案。 – knittl