Heim > Artikel > Backend-Entwicklung > 分享一个函数,求bug,求改善^
分享一个函数,求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 />