php内联函数,如.net


php inline function like .net

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

例如:

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

我收到以下错误:"Closure类的对象无法转换为字符串"我像上面那样在.net中编写内联函数。请帮帮我!!!

'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];