使用php的内置函数create_function创建出来的函数。
create_function('$item','return $item*3;')
问一下各位 为什么创建出来的函数 参数列表与函数体都要加上引号呢??
create_function创建的函数

解决方案 »

  1.   

    string create_function ( string $args , string $code )
    两个参数都是字符串
      

  2.   

    因为 create_function 要求传入2个字符串参数你的代码等价于
    function tmp($item) { return $item*3; }
    $b = array_map('tmp', $a);用闭包就可以
    $b = array_map(function($item) { return $item*3; }, $a);
      

  3.   


    $item已经是提交给匿名函数的变量了。
      

  4.   

    $a=array(100,200,300);
    $b=array_map(create_function('$item','return $item*3;'),$a);
    你的意思是说('$item','return $item*3;')它们两个只是create_function这个函数的两个参数而已 它内部会自动创建这个函数是吗
      

  5.   

    <?php
    $a=array(100,200,300);
    $b=array_map(create_function('$item','return $item*3;'),$a);
    var_dump($b);
    create_function要求传入两个字符串 可是我这里$a的参数是100 200 300 是数值型的呀 求帮助
      

  6.   

    function tmp($item) { return $item*3; }
    $b = array_map('tmp', $a);
    写成这样,你是否有疑问呢?create_function 要求传入两个字符串
    并不代表 create_function 产生的函数也要求传入两个字符串
    create_function 要求传入的两个字符串,分别是:匿名函数的参数列表和函数体
      

  7.   


    你似乎混淆一个概念:
    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);