当前位置: 代码迷 >> PHP >> 分享一个函数,求bug,求改善^
  详细解决方案

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

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


/**
 * 通过递归调用让函数支持多维数组 by wanderwind
 * 建议其他函数调用来实现
 * @param string $fn 调用函数名称
 * @param array $param 参数数组,通常传入func_get_args()
 * @param int $key 需要递归的参数键值
 * @param boolean $check 是否需要检测函数合法性
 * @return mixed 返回对$param[$key]的运行结果
 */
function fn2array($fn, $param, $key = 0, $check = true) {
    //从外部调用时默认检测函数合法性,多维数组递归时忽略
    if ($check && !function_exists($fn)) {
        return false;
    }

    //提取执行目标,如果目标非数组可以直接执行
    $content = $param[$key];
    if (!is_array($content)) {
        return call_user_func_array($fn, $param);
    }

    //如果目标是数组则递归执行
    foreach ($content as &$val) {
        $param[$key] = $val;
        $val = fn2array($fn, $param, $key, false);
    }

    return $content;
}

function wstripslashes() {
    return fn2array('stripslashes', func_get_args());
}

function wsubstr() {
    $param = func_get_args();
    $param[3] = isset($param[3]) ? $param[3] : 'utf-8';
    return fn2array('mb_substr', $param, 0);
}

$a = array(
    2 => '\"aaaaaaaaaaaaaaa\"',
    array('\"啊啊啊啊啊啊啊啊啊啊啊啊啊\"'),
    array(array(array('\"sss\dasf\dasfasdsad\"'))),
);

print_r(wstripslashes($a));
print_r(wsubstr($a, 2, 5));

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