[請益] 遞迴 array_map array_walk
大家好
有一個很基本需求 就是一個陣列裡面
值中有陣列,有字串,但是陣列裡面最終的值依舊為字串
(不知道這種狀況有沒有專有名詞?)
想跑一個函式,裡面所有字串都被一個函事處理過
這樣的東西我有寫出來。
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
推
03/24 17:16, , 1F
03/24 17:16, 1F
→
03/24 17:18, , 2F
03/24 17:18, 2F
→
03/24 17:18, , 3F
03/24 17:18, 3F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章