+ -
当前位置:首页 → 问答吧 → 书上的匿名函数 是不是讲得有问题?是不是少定义了什么变量?

书上的匿名函数 是不是讲得有问题?是不是少定义了什么变量?

时间:2007-07-12

来源:互联网

<?
$hao = create_function('$a,$b','return(strlen($a) - strlen($b));');
$array = array('my name is haoruyi','boy','hello word','do not it');
usort($hao,$array);
print_r($array);
?>


这样写的,弄了半天,都提示第几行第几行有错误.这个范例是不是少定义了什么变量?

作者: dvogo   发布时间: 2007-07-12

应该是原书的Bug,晚上回去确认一下。

usort($hao,$array);
应该改为:
usort($array,$hao);

usort ( array &array, callback cmp_function )
本函数将用用户自定义的比较函数对一个数组中的值进行排序。

作者: Haohappy   发布时间: 2007-07-12

不好意思,书上没有错,是我弄错了!顺序弄错了!




另外大师能不能帮我理解一下!!


$a与$b变量,是啥东东?怎么不需要定义呀?

[ 本帖最后由 dvogo 于 2007-7-12 18:31 编辑 ]

作者: dvogo   发布时间: 2007-07-12

回去对了一下,书没错。

你可以把匿名函数理解为临时定义的函数,可以避免和其他函数出现命名冲突(因为匿名函数没有函数名称)。 

create_function创建匿名函数时,其中的$a,$b是指匿名函数的参数,所以不需要定义。

比如
create_function('$a,$b','return(strlen($a) - strlen($b));');

也可以按正常的写法:
function getIt($a,$b){
  return(strlen($a) - strlen($b));
}

[ 本帖最后由 Haohappy 于 2007-7-14 09:13 编辑 ]

作者: Haohappy   发布时间: 2007-07-14

热门下载

更多