【问题标题】:PHP error. Why is "variable undefined" inside array_map?PHP 错误。为什么array_map中的“变量未定义”?
【发布时间】:2012-01-17 08:57:27
【问题描述】:

我在我的 php 应用程序中使用 array_map 函数。 我这样定义了array_map函数。

$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 时。 i 正确打印值,因此定义了 $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
        )
)

【问题讨论】:

    标签: php arrays array-map


    【解决方案1】:
    $rated_item_array = array_map(
      function ($a) use ($ratingID){ 
        return $a + array('RatingID' => $ratingID ); 
      }, 
      $rated_item_array
    );
    

    【讨论】:

    • 来自关于匿名函数的 php.net 文档。 “闭包也可以从父范围继承变量。任何此类变量都必须传递给使用语言构造。”看例子#3 php.net/manual/en/functions.anonymous.php
    • 经过搜索和尝试,您的回答真的是最好的!谢谢兄弟:)
    • 今天我了解了“使用 ($ratingID)”。谢谢。有时,来自 JavaScript 的 PHP 很难处理范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2014-05-13
    • 2021-12-16
    相关资源
    最近更新 更多