Home  >  Article  >  Backend Development  >  分享一个函数,求bug,求改善^

分享一个函数,求bug,求改善^

WBOY
WBOYOriginal
2016-06-13 12:10:53757browse

分享一个函数,求bug,求改进^_^
我们phper经常会用到很多对数字或字符串的处理函数
遗憾的是大部分都不支持数组
灵光一闪,搞定它
觉得有用的大大们捧个场
顺便找些bug并给些改进的建议

<br />/**<br /> * 通过递归调用让函数支持多维数组 by wanderwind<br /> * 建议其他函数调用来实现<br /> * @param string $fn 调用函数名称<br /> * @param array $param 参数数组,通常传入func_get_args()<br /> * @param int $key 需要递归的参数键值<br /> * @param boolean $check 是否需要检测函数合法性<br /> * @return mixed 返回对$param[$key]的运行结果<br /> */<br />function fn2array($fn, $param, $key = 0, $check = true) {<br />    //从外部调用时默认检测函数合法性,多维数组递归时忽略<br />    if ($check && !function_exists($fn)) {<br />        return false;<br />    }<br /><br />    //提取执行目标,如果目标非数组可以直接执行<br />    $content = $param[$key];<br />    if (!is_array($content)) {<br />        return call_user_func_array($fn, $param);<br />    }<br /><br />    //如果目标是数组则递归执行<br />    foreach ($content as &$val) {<br />        $param[$key] = $val;<br />        $val = fn2array($fn, $param, $key, false);<br />    }<br /><br />    return $content;<br />}<br /><br />function wstripslashes() {<br />    return fn2array('stripslashes', func_get_args());<br />}<br /><br />function wsubstr() {<br />    $param = func_get_args();<br />    $param[3] = isset($param[3]) ? $param[3] : 'utf-8';<br />    return fn2array('mb_substr', $param, 0);<br />}<br /><br />$a = array(<br />    2 => '\"aaaaaaaaaaaaaaa\"',<br />    array('\"啊啊啊啊啊啊啊啊啊啊啊啊啊\"'),<br />    array(array(array('\"sss\dasf\dasfasdsad\"'))),<br />);<br /><br />print_r(wstripslashes($a));<br />print_r(wsubstr($a, 2, 5));<br />

------解决思路----------------------
進來支持下。
------解决思路----------------------
又想起了那句著名的话:重复造轮子的人呐
------解决思路----------------------
不是很明白函数的意思,不过还是进来看看
------解决思路----------------------
造轮子没有什么不好,选好材料和工艺才能事半功倍

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn