PHP遞歸刪除多維數(shù)組中的某個(gè)值
今天在做業(yè)務(wù)邏輯的過程中,需要在一個(gè)不確定的多維數(shù)組中刪除某個(gè)特定的key,查了挺長時(shí)間加上自己的修改,終于滿足了業(yè)務(wù)邏輯,該方法在修改后應(yīng)該可以適用于很多地方,所以記錄下來以備后用,我這里是一個(gè)多維數(shù)組,還是json_encode后的,主要目的是刪除所有old_tags_id數(shù)組中有tag_id=264的數(shù)據(jù),順便要?jiǎng)h除相應(yīng)的tag_name,還有 addtag要減1,,代碼如下:
先放遞歸函數(shù),當(dāng)然這里是核心,很多人看了這個(gè)應(yīng)該就已經(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有三個(gè)人,rainbow H T_T\"}]}", "configId": "2392", "new_tags_id": [ "new_tag2" ] } ]
然后賦值,調(diào)用
$tag_id = 264; $menuData = json_decode($data,true);//這里第二個(gè)參數(shù)用true就會(huì)轉(zhuǎn)化為數(shù)組了 self::dealMenuTagDelete($menuData,$tag_id); print_r($menuData);
以上所述是小編給大家介紹的PHP遞歸刪除多維數(shù)組中的某個(gè)值,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
將博客園(cnblogs.com)數(shù)據(jù)導(dǎo)入到wordpress的代碼
博客園限制太多,于是決定從博客園(cnblogs)更換自己個(gè)人的博客。WORDPRESS口碑還不錯(cuò),于是決定用用看。之前發(fā)的數(shù)百篇日志需要導(dǎo)入過來,在網(wǎng)上搜了一會(huì),發(fā)現(xiàn)沒有這個(gè)插件,無奈只能自己寫一個(gè)2013-01-01Laravel 5框架學(xué)習(xí)之子視圖和表單復(fù)用
本文給大家主要介紹的是Laravel5框架中的子視圖以及表單復(fù)用的用法,十分的細(xì)致全面,對于大家熟練掌握Laravel5框架非常有幫助,有需要的小伙伴可以參考下2015-04-04PHP后臺備份MySQL數(shù)據(jù)庫的源碼實(shí)例
今天小編就為大家分享一篇關(guān)于PHP后臺備份MySQL數(shù)據(jù)庫的源碼實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03詳解php幾行代碼實(shí)現(xiàn)CSV格式文件輸出
本篇文章主要介紹了詳解php幾行代碼實(shí)現(xiàn)CSV格式文件輸出,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07php和jquery實(shí)現(xiàn)地圖區(qū)域數(shù)據(jù)統(tǒng)計(jì)展示數(shù)據(jù)示例
我們要在地圖上有限的區(qū)塊內(nèi)展示更多的信息,更好的辦法是通過地圖交互來實(shí)現(xiàn)。本文將給大家講解通過鼠標(biāo)滑動(dòng)到地圖指定省份區(qū)域,在彈出的提示框中顯示對應(yīng)省份的數(shù)據(jù)信息。適用于數(shù)據(jù)統(tǒng)計(jì)和地圖區(qū)塊展示等場景2014-02-02php將session放入memcached的設(shè)置方法
這篇文章主要介紹了php將session放入memcached的設(shè)置方法,需要的朋友可以參考下2014-02-02PHP設(shè)計(jì)模式(九)外觀模式Facade實(shí)例詳解【結(jié)構(gòu)型】
這篇文章主要介紹了PHP設(shè)計(jì)模式:外觀模式Facade,結(jié)合實(shí)例形式詳細(xì)分析了PHP外觀模式Facade相關(guān)概念、功能、原理、用法與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05