作者coldollsheep (加油加油^^)
看板PHP
标题[请益] 递回 array_map array_walk
时间Sat Mar 24 14:14:07 2012
大家好
有一个很基本需求 就是一个阵列里面
值中有阵列,有字串,但是阵列里面最终的值依旧为字串
(不知道这种状况有没有专有名词?)
想跑一个函式,里面所有字串都被一个函事处理过
这样的东西我有写出来。
BBS看比较不好看
网页:
http://jobnote-ryan.blogspot.com/2012/03/php-htmlspecialchars.html
总之我要的功能我写出来了
但是公司有一个人,很神秘的对我说
这种东西用array_walk、array_map去做就好了
但是我试都不成功耶。感觉都只针对字串去作处理
假如遇到第二层是阵列还不是失败?不太懂那个人的意思
请懂得人指点一下迷津
//有一个需求,阵列里面所有参数都要被一个函式处理过。
//此例是 htmlspecialchars
$tmpary['a']['a1'] = '<i>a1v</i>';
$tmpary['a']['a2'] = '<i>a2v</i>';
$tmpary['b'] = '<i>bv</i>';
$tmpary = init_htmlargvfilter($tmpary); //把外来参数,做个过滤。
init_pre_printr($tmpary);
//fn zone-------------------------------------------------------
function init_htmlargvfilter(&$tmpary) {
if (is_array($tmpary)) {
foreach ($tmpary as $k => $v) {
if (is_array($v)) {
//於此作递回动作
$tmpary[$k] = init_htmlargvfilter($v);
} else {
$tmpary[$k] = htmlspecialchars($v);
}
}
}
return $tmpary;
}
exit;
//後来写了一个函式,可以递回这样子处理很多东西
$_REQUEST['a']['a1'] = '<i>a1v</i>';
$_REQUEST['a']['a2'] = '<i>a2v</i>';
$_REQUEST['b'] = '<i>bv</i>';
$_REQUEST = init_array_scan($_REQUEST, 'htmlspecialchars'); //把外来参数,做
个过滤。
init_pre_printr($_REQUEST);
//fn zone-------------------------------------------------------
function init_array_scan($tmpary, $user_func) {
if (is_array($tmpary)) {
foreach ($tmpary as $k => $v) {
if (is_array($v)) {
$tmpary[$k] = init_array_scan($v, $user_func);
} else {
$tmpary[$k] = call_user_func($user_func, $v);
}
}
}
return $tmpary;
}
exit;
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.9.103
2F:→ liaosankai:不过我觉得自己写递回很好呀,顶多比较一下哪个方式在 03/24 17:18
3F:→ liaosankai:效能上比较好一点而已 03/24 17:18