2012-01-17 25 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

相关问题