【问题标题】:php inline function like .net像.net这样的php内联函数
【发布时间】:2016-05-11 07:55:37
【问题描述】:

我想在 php 中编写一个内联函数,如下所示

例如:

$c = getCountry();
$b = getZones();
$a = [
      'x' => function() use ($c, $b)
             {
                 if ( isset($c[0]) )
                     return getZonesByCountryId($c[0]['id']);
                 else
                     return $b;
             }
     ];

我收到此错误:“类闭包对象无法转换为字符串” 我像上面那样在.net中编写内联函数。请帮帮我!!!

【问题讨论】:

  • This 代码不会引发 that 错误。稍后尝试 echo 的值 $a['x'] 的东西会引发该错误。您是否希望该函数立即执行并将其结果分配给x...?
  • 你用的是哪个版本的php?

标签: php function inline inline-functions


【解决方案1】:

'x' 的值将是一个函数;匿名函数本身将被分配给'x',而不是它的返回值。要为其赋值,需要实际执行函数:

$a = ['x' => call_user_func(function() use ($c, $b) {
          if (isset($c[0])) {
              return getZonesByCountryId($c[0]['id']);
          } else {
              return $b;
          }
      })];

但是,在这种特殊情况下,使用如此复杂的解决方案绝对没有意义,因为这样就可以了:

$a = ['x' => isset($c[0]) ? getZonesByCountryId($c[0]['id']) : $b];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2020-01-02
    相关资源
    最近更新 更多