【问题标题】:array_map inline anonymous functionarray_map 内联匿名函数
【发布时间】:2013-08-01 14:21:06
【问题描述】:

我用array_maphere测试了内联匿名函数

它有效,但是当我尝试使用 $user_meta 时它不起作用。

$user_meta = Array ( [interest] => Array ( [0] => Array ) [type] => 
     Array ( [0] => Array ) [user_status] => Array ( [0] => deny)
     [firstname] => Array ( [0] => ) [lastname] => Array ( [0] => B ) 
     [email] => email@cc.com ) 

$user_meta = array_map(function($a) { return $a[0]; },$user_meta);

“解析错误:语法错误,意外的 T_FUNCTION,期待 ')' in”

here is the test link showing error

【问题讨论】:

  • 您对 $user_meta 数组的定义对 PHP 数组无效,它是 print_r() 输出,格式化为便于阅读
  • P.S.内联匿名函数仅适用于 PHP 5.3+
  • @Paulpro 你为什么回滚格式更改?
  • 邮件中有问题!需要把它放在引号“email@cc.com”

标签: php array-map


【解决方案1】:

我希望这会有所帮助:

$user_meta = array_map(function ($a) { return $a[0]; }, $user_meta);

【讨论】:

  • 这是一个很好的答案,除了 there must be a space between the keyword function and its parameters 的注释。因为我删除了空间并且没有问题。
  • function关键字后面的空格真的没关系...!
  • 空间没有任何变化。
  • 是的,语法看起来不错。 $user_meta 定义应该有错误。
【解决方案2】:

array_map 行没有任何问题,但在它之前的所有内容都是错误的。那是 print_r 的输出,而不是 PHP 代码。比较您在发布的两个链接中定义数组的方式。

【讨论】:

  • 我在传递带有参数的数组时遇到同样的错误。我只能通过显式调用函数来使其工作。here
  • 你有哪个版本的PHP?大多数人现在至少有 5.3,而您的代码在 5.3 及更高版本中运行良好。
  • 我使用的是 php 5.5,只有你可以检查更新的链接..再次显示错误
  • @BLPraveen 标题为:Output for 5.3.0 - 5.5.1 的部分中没有错误。仅在旧版本部分中。
  • @BLPraveen 添加了一些输出,以便您可以看到它正在工作:3v4l.org/5NgCc
【解决方案3】:

这不是你问题的答案,但由于你想返回每个子数组的第一个键,你可以使用array_column

$user_meta = array_column($user_meta, 0);

【讨论】:

    【解决方案4】:

    可以稍微短一点

    $user_meta = array_map(fn ($a) => $a[0], $user_meta);
    

    但是对于这样的array_map,我更喜欢array_column 方法

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2017-10-18
      相关资源
      最近更新 更多