【问题标题】:Is there any difference between passing variables into function and import them by USE?将变量传递给函数并通过USE导入它们有什么区别吗?
【发布时间】:2016-06-06 22:27:00
【问题描述】:

看看这段代码:

$str = implode(', ', array_map(function($var1) use ($var2) { /* code */ }, $arr));

如您所见,我在函数中使用了USE 关键字来导入var2。好的,一切都好。只是我可以在没有USE 的情况下做到这一点。像这样的:

$str = implode(', ', array_map(function($var1. $var2) { /* code */ }, $arr));

那么我什么时候应该使用 USE ?它有什么特别的优势吗?

【问题讨论】:

    标签: php function parameter-passing


    【解决方案1】:

    use 需要使用函数将变量从一个作用域传递到另一个作用域。在使用无法访问其范围(父范围)之外的变量的匿名函数时很有用。请参阅下面链接中的示例 #3。

    http://php.net/manual/en/functions.anonymous.php

    至于您的示例,我猜您在匿名函数中使用 2 个参数时会/应该收到缺少参数的警告消息。您的第二个示例基本上看起来像这样:

    function myFunction($var1, $var2)
    {
        // myFunction logic
    }
    $arr = array('string1', 'string2', 'string3');
    $temp = array();
    foreach ($arr as $value) {
        $temp[] = myFunction($value); // produces an e_warning since myFunction expects 2 arguments
    }
    $str = implode(', ', $temp);
    

    【讨论】:

      【解决方案2】:

      使用use的原因是在函数定义时而不是在函数调用时设置变量值。例如,

      $var1 = 1;
      $var2 = 2;
      $fun1 = function($var1) use ($var2) { return $var1 + $var2; };
      $fun2 = function($var1, $var2) { return $var1 + $var2; };
      
      echo $fun1(3);
      // prints 5
      echo $fun2(3,4);
      // prints 7
      

      【讨论】:

        猜你喜欢
        • 2017-06-12
        • 2015-08-02
        • 2020-05-20
        • 2013-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 2011-09-19
        相关资源
        最近更新 更多