2012-01-17 23 views
27

我在我的php應用程序中使用array_map函數。 我像這樣定義了array_map函數。PHP錯誤。爲什麼array_map中的「variable undefined」?

$ratingID = $this->db->insert_id(); 

    $rated_item_array = array_map(function ($a) { 
     return $a + array('RatingID' => $ratingID); 
    }, $rated_item_array); 

PHP的通知來

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: ratingID 

當我打印的$ratingID。我正確輸出值,所以定義了$ ratingID。 爲什麼它在array_map函數中是未定義的? 我$rated_item_array

Array 
(
    [0] => Array 
     (
      [RatingFactorPreferenceID] => 1, 
      [PreferenceID] => 45, 
      [RatedValue] => 1, 
      [CreatedOn] => 1326790338, 
      [CreatedBy] => 25 
     ) 

    [1] => Array 
     (
      [RatingFactorPreferenceID] => 2, 
      [PreferenceID] => 45, 
      [RatedValue] => 1, 
      [CreatedOn] => 1326790338, 
      [CreatedBy] => 25 
     ) 

    [2] => Array 
     (
      [RatingFactorPreferenceID] => 3, 
      [PreferenceID] => 45, 
      [RatedValue] => 1, 
      [CreatedOn] => 1326790338, 
      [CreatedBy] => 25 
     ) 
) 

回答

73
$rated_item_array = array_map(
    function ($a) use ($ratingID){ 
    return $a + array('RatingID' => $ratingID); 
    }, 
    $rated_item_array 
); 
+0

完美。非常感謝你 – 2012-01-17 09:02:45

+2

謝謝你的好答案。 – 2014-10-28 02:54:43

+2

從匿名函數的php.net文檔。 「閉包也可以繼承父範圍的變量,任何這樣的變量都必須傳遞給使用語言構造。」看看示例#3 http://php.net/manual/en/functions.anonymous.php – 2015-06-12 14:39:39

相關問題