在`array_map`中使用时,Php函数抛出“未定义的常量”

时间:2017-01-17 09:30:46

标签: php

我正在

  

注意:使用未定义的常量ord - 假设'ord'

在线

array_map(ord,str_split($string))

这是令人惊讶的,因为ordphp function

如果我要将呼叫重写为:

array_map(function ($x) {return ord($x);},str_split($string))

代码无需任何警告/通知

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:6)

功能名称应 passed 作为回调参数的 字符串

  

PHP函数的名称作为字符串传递。可以使用任何内置或用户定义的函数,除了语言结构,例如:array(),echo,empty(),eval(),exit(),isset(),list(),print或unset() 。

array_map("ord",str_split($string))

根据已修改的问题进行修改。

匿名函数是不是其他一些可调用函数的名称,因此它们不需要作为字符串文字传递。该要求仅用于传递已定义的可调用函数的名称,而不是匿名函数。

  

除了常见的用户定义函数外,匿名函数也可以传递给回调参数。

ord在匿名函数中没有引号的情况下正常工作,因为在那里它不作为可调用函数传递,它只是在另一个函数体内的变量上调用。