2012-01-17 18 views
27

Używam funkcji array_map w mojej aplikacji php. Tak zdefiniowałem funkcję array_map.Błąd PHP. Dlaczego "zmienna undefined" w tablicy array_map?

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

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

PHP Ogłoszenie pochodzi

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: ratingID 

Kiedy wydrukować $ratingID. i drukuje wartość poprawnie, więc zdefiniowano $ ratingID. Dlaczego jest on niedostępny w funkcji array_map? My $rated_item_array jest

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 
     ) 
) 

Odpowiedz

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

działa idealnie. bardzo dziękuję –

+2

dzięki za miłą odpowiedź. –

+2

Z dokumentacji php.net na temat anonimowych funkcji. "Zamknięcia mogą również dziedziczyć zmienne z zakresu nadrzędnego, a wszelkie takie zmienne muszą być przekazywane do konstrukcji języka używania." Spójrz na przykład # 3 http://php.net/manual/en/functions.anonymous.php –

Powiązane problemy