PHP遞歸刪除多維數(shù)組中的某個值
今天在做業(yè)務邏輯的過程中,需要在一個不確定的多維數(shù)組中刪除某個特定的key,查了挺長時間加上自己的修改,終于滿足了業(yè)務邏輯,該方法在修改后應該可以適用于很多地方,所以記錄下來以備后用,我這里是一個多維數(shù)組,還是json_encode后的,主要目的是刪除所有old_tags_id數(shù)組中有tag_id=264的數(shù)據(jù),順便要刪除相應的tag_name,還有 addtag要減1,,代碼如下:
先放遞歸函數(shù),當然這里是核心,很多人看了這個應該就已經(jīng)知道如何使用了.
public function dealMenuTagDelete(&$menuData, $tag_id) { if (!is_array($menuData)) { return false; } foreach ($menuData as $key => $val) { if ($key === 'old_tags_id') { foreach ($val as $tagKey => $tagVaule) { if ($tagVaule == $tag_id) { unset($menuData['old_tags_id'][$tagKey]); unset($menuData['old_tags'][$tagKey]); $menuData['addtag']--; } } } if (is_array($val)) { self::dealMenuTagDelete($menuData[$key], $tag_id); } } return $menuData; }
維數(shù)組長這樣,還是jeson_encode后的格式:
[ { "typ": "res_ejcd", "tit": "message1", "data": "1@2@3", "subdata": { "zizicd1": { "typ": "res_wb", "data": "qqqq", "addtag": 1, "old_tags": [ "\"campaign綜合分析\"", "test add a tag" ], "old_tags_id": [ "264", "17" ], "new_tags_id": [], "tit": "1" }, "zizicd2": { "typ": "res_wb", "data": "wwww", "addtag": 1, "old_tags": [ "test add a tag" ], "old_tags_id": [ "17" ], "new_tags_id": [], "tit": "2" }, "zizicd3": { "typ": "res_wb", "data": "ddd", "addtag": 1, "old_tags": [], "old_tags_id": [], "new_tags_id": [ "new_tag1" ], "tit": "3" } }, "addtag": 0, "old_tags": [], "old_tags_id": [], "new_tags_id": [] }, { "typ": "res_tw", "tit": "Post", "data": "2121", "subdata": null, "addtag": 1, "old_tags": [ "“519引號閱讀user message圖文”" ], "old_tags_id": [ "183" ], "new_tags_id": [] }, { "typ": "res_wb", "tit": "Today1", "data": "12312321", "subdata": null, "addtag": 1, "old_tags": [], "old_tags_id": [], "dynamicdata": "{\"default\":{\"message_type\":\"1\",\"val\":\"dynamic\"},\"segementation\":[{\"segId\":\"451\",\"message_type\":\"1\",\"val\":\"你屬于conversation 80這一組\"},{\"segId\":\"450\",\"message_type\":\"1\",\"val\":\"poll-1212\\n有三個人,rainbow H T_T\"}]}", "configId": "2392", "new_tags_id": [ "new_tag2" ] } ]
然后賦值,調(diào)用
$tag_id = 264; $menuData = json_decode($data,true);//這里第二個參數(shù)用true就會轉(zhuǎn)化為數(shù)組了 self::dealMenuTagDelete($menuData,$tag_id); print_r($menuData);
以上所述是小編給大家介紹的PHP遞歸刪除多維數(shù)組中的某個值,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
將博客園(cnblogs.com)數(shù)據(jù)導入到wordpress的代碼
博客園限制太多,于是決定從博客園(cnblogs)更換自己個人的博客。WORDPRESS口碑還不錯,于是決定用用看。之前發(fā)的數(shù)百篇日志需要導入過來,在網(wǎng)上搜了一會,發(fā)現(xiàn)沒有這個插件,無奈只能自己寫一個2013-01-01php和jquery實現(xiàn)地圖區(qū)域數(shù)據(jù)統(tǒng)計展示數(shù)據(jù)示例
我們要在地圖上有限的區(qū)塊內(nèi)展示更多的信息,更好的辦法是通過地圖交互來實現(xiàn)。本文將給大家講解通過鼠標滑動到地圖指定省份區(qū)域,在彈出的提示框中顯示對應省份的數(shù)據(jù)信息。適用于數(shù)據(jù)統(tǒng)計和地圖區(qū)塊展示等場景2014-02-02