PHP array_map()、array_walk()、array_walk_recursive()函数
(2011-07-01 15:01:48)
标签:
函数
杂谈
PHP array_map()、array_walk()、array_walk_recursive()函数
function hyy_array_map(){
$parmnum = func_num_args();
if($parmnum<2){
throw new Exception("the number of parms is less than 2");
}
$function = func_get_arg(0);
if($function === null){
//throw new Exception("the function is null");
function hyy_array_map_default_func(){
return func_get_args();
}
$function = 'hyy_array_map_default_func';
}
if(!is_string($function) || !function_exists($function)){
throw new Exception("the function $function does not
exist");
}
if($parmnum==2){
$array = array();
$parm1 = func_get_arg(1);
if(!is_array($parm1)){
throw new Exception("parm 2 must be a array");
}
foreach($parm1 as $key=>$val){
$array[$key] = call_user_func($function,$val);
}
return $array;
}
$parmnum--;
$parms = func_get_args();
$array = array();
$maxcount = count($parms[1]);
$parms[1] = array_values($parms[1]);
for($i=2;$i<=$parmnum;$i++){
if($maxcount
$maxcount = count($parms[$i]);
}
$parms[$i] = array_values($parms[$i]);
}
for($i=0;$i
$parmstr = '';
for($j=1;$j<=$parmnum;$j++){
$parmstr .= ', $parms['.$j.']['.$i.']';
}
eval_r('$array[] =
call_user_func($function'.$parmstr.');');
}
return $array;
}
array_walk()函数
function hyy_array_walk(&$parm,$function){
$parmnum = func_num_args();
if($parmnum>3) {
throw new Exception('too many parms,the number of parms must not
be more than 3');
}
if(!is_array($parm)){
throw new Exception('the first parm must be a
array');
}
if(!is_string($function) || !function_exists($function)){
throw new Exception("the second parm is not a function's name or
the function does not exist");
}
$keys = array_keys($parm);
if($parmnum == 3){
$userdata = func_get_arg(2);
foreach($keys as $key){
eval_r($function.'($parm[$key],$key,$userdata);');
}
}else{
foreach($keys as $key){
eval_r($function.'($parm[$key],$key);');
}
}
}
array_walk_recursive()函数
function
hyy_array_walk_recursive(&$parm,$function){
$parmnum = func_num_args();
if($parmnum>3) {
throw new Exception('too many parms,the number of parms must not
be more than 3');
}
if(!is_array($parm)){
throw new Exception('the first parm must be a
array');
}
if(!is_string($function) || !function_exists($function)){
throw new Exception("the second parm is not a function's name or
the function does not exist");
}
$keys = array_keys($parm);
if($parmnum == 3){
$userdata = func_get_arg(2);
foreach($keys as $key){
if(is_array($parm[$key])){
hyy_array_walk_recursive($parm[$key],$function,$us erdata);
}else{
eval_r($function.'($parm[$key],$key,$userdata);');
}
}
}else{
foreach($keys as $key){
if(is_array($parm[$key])){
hyy_array_walk_recursive($parm[$key],$function);
}else{
eval_r($function.'($parm[$key],$key);');
}
}
}
}
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。