使用php的内置函数create_function创建出来的函数。
create_function('$item','return $item*3;')
问一下各位 为什么创建出来的函数 参数列表与函数体都要加上引号呢??
create_function创建的函数
create_function('$item','return $item*3;')
问一下各位 为什么创建出来的函数 参数列表与函数体都要加上引号呢??
create_function创建的函数
两个参数都是字符串
function tmp($item) { return $item*3; }
$b = array_map('tmp', $a);用闭包就可以
$b = array_map(function($item) { return $item*3; }, $a);
$item已经是提交给匿名函数的变量了。
$b=array_map(create_function('$item','return $item*3;'),$a);
你的意思是说('$item','return $item*3;')它们两个只是create_function这个函数的两个参数而已 它内部会自动创建这个函数是吗
$a=array(100,200,300);
$b=array_map(create_function('$item','return $item*3;'),$a);
var_dump($b);
create_function要求传入两个字符串 可是我这里$a的参数是100 200 300 是数值型的呀 求帮助
$b = array_map('tmp', $a);
写成这样,你是否有疑问呢?create_function 要求传入两个字符串
并不代表 create_function 产生的函数也要求传入两个字符串
create_function 要求传入的两个字符串,分别是:匿名函数的参数列表和函数体
你似乎混淆一个概念:
create_function是创建匿名函数,他本身(create_function)是一个函数,需要传入的参数是字符串。
而创建出来的函数的参数就是你要传递的参数,也就是函数的形参 ,100,200,300是传给创建出来的函数的实参,由于创建的匿名函数内部是直接使用该参数的,所以传进去是数值型,使用的就是数值型。如果传递的不是数值,例如是字符串0123,由于有*操作符,所以会先转化为数值然后操作:
请看:
$a=array(100,200,"011");
$b=array_map(create_function('$item','return $item*3;'),$a);
var_dump($b);