为了账号安全,请及时绑定邮箱和手机立即绑定

关于array_walk()回调函数参数

关于array_walk()回调函数参数

PHP
慕码人2809647 2015-12-03 01:47:45
这里课程代码是array_walk($fields, array('PdoMySQL', 'addSpecilChar')); 但是我看官方文档的是 bool array_walk ( array &$array , callable $funcname [, mixed $userdata =  NULL ] ) 后面的参数为什么不是方法名而是一个数组呢,数组的PdoMySQL的含义又是? 后面的 public static function parseFields($fields){     if(is_array($fields)){         array_walk($fields, array('PdoMySQL', 'addSpecilChar'));         $fieldsStr = implode(',', $fields);     }elseif(is_string($fields) && !empty($fields)){         if(strpos($fields, '`') === false){             $fields = explode(',', $fields);             array_walk($fields, array('PdoMySQL', 'addSpecilChar'));             $fieldsStr = implode(',', $fields);         }else{             $fieldsStr = $fields;         }     }else{         $fieldsStr = '*';     }     return $fieldsStr; } 为什么参数要是引用的形式传入,这样传入参数后为什么还要返回它,这样就不需要返回了吧
查看完整描述

1 回答

?
茶花烙

TA贡献1条经验 获得超0个赞

  1. 关于array_walk

    array_walk($fields, array('PdoMySQL', 'addSpecilChar'));

    这个是在一个类的内部使用array_walk,即把$fields通过PdoMySQL这个类中的addSpecilchar方法进行过滤。

  2. 你后面的那个 parseFields方法没看到有引用传参,所以处理后需要有返回值。

  3. 引用传参是会改变原始数据的,array_walk(&$array,$functionname),但是此种方式不应该改变原始数据的结构,比如说数组,不应该添加元素或者删除元素,因为这有可能出现不可预知的后果。

查看完整回答
反对 回复 2015-12-03
  • 慕码人2809647
    慕码人2809647
    不好意思复制错代码段了,下面的parse应该是这个函数 public static function addSpecilChar(&$value){ if($value === '*' || strpos($value, '`') !== false){ //不用做处理 }elseif(strpos($value, '`') === false){ $value = '`'.trim($value).'`'; } return $value; } 这里通过回调函数改变了传递过来的数组中的值了吧?应该不需要返回..
  • 1 回答
  • 0 关注
  • 1498 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信