[請益] 遞迴 array_map array_walk

看板PHP作者 (加油加油^^)時間13年前 (2012/03/24 14:14), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
大家好 有一個很基本需求 就是一個陣列裡面 值中有陣列,有字串,但是陣列裡面最終的值依舊為字串 (不知道這種狀況有沒有專有名詞?) 想跑一個函式,裡面所有字串都被一個函事處理過 這樣的東西我有寫出來。 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
你公司迷之人物講的可能是這個吧http://goo.gl/nwRKm
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
文章代碼(AID): #1FRMOoIf (PHP)
文章代碼(AID): #1FRMOoIf (PHP)