PHP递归删除多维数组中的某个值

2025-05-29 0 66

今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的key,查了挺长时间加上自己的修改,终于满足了业务逻辑,该方法在修改后应该可以适用于很多地方,所以记录下来以备后用,我这里是一个多维数组,还是json_encode后的,主要目的是删除所有old_tags_id数组中有tag_id=264的数据,顺便要删除相应的tag_name,还有 addtag要减1,,代码如下:

先放递归函数,当然这里是核心,很多人看了这个应该就已经知道如何使用了.

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
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;

}

维数组长这样,还是jeson_encode后的格式:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79
[ {

"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"

]

}

]

然后赋值,调用

?

1

2

3

4
$tag_id = 264;

$menuData = json_decode($data,true);//这里第二个参数用true就会转化为数组了

self::dealMenuTagDelete($menuData,$tag_id);

print_r($menuData);

以上所述是小编给大家介绍的PHP递归删除多维数组中的某个值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP递归删除多维数组中的某个值 https://www.kuaiidc.com/94706.html

相关文章

发表评论
暂无评论