我正在
注意:使用未定义的常量ord - 假设'ord'
在线
array_map(ord,str_split($string))
这是令人惊讶的,因为ord
是php function
如果我要将呼叫重写为:
array_map(function ($x) {return ord($x);},str_split($string))
代码无需任何警告/通知
知道为什么会这样吗?
答案 0 :(得分:6)
功能名称应 passed 作为回调参数的 字符串 。
PHP函数的名称作为字符串传递。可以使用任何内置或用户定义的函数,除了语言结构,例如:array(),echo,empty(),eval(),exit(),isset(),list(),print或unset() 。
array_map("ord",str_split($string))
根据已修改的问题进行修改。
匿名函数是不是其他一些可调用函数的名称,因此它们不需要作为字符串文字传递。该要求仅用于传递已定义的可调用函数的名称,而不是匿名函数。
除了常见的用户定义函数外,匿名函数也可以传递给回调参数。
ord
在匿名函数中没有引号的情况下正常工作,因为在那里它不作为可调用函数传递,它只是在另一个函数体内的变量上调用。