php关联数组的创建,php - 根据属性从对象数组创建PHP关联数组 - SO中文参考 - www.soinside.com...

本文探讨如何使用WordPress REST API获取类别列表,并将其转换为层次结构的关联数组,以便轻松创建网页上的菜单。面对JSON数据,开发者面临挑战,需要递归方法处理具有层级关系的类别数据。目标是构建一种方式,从顶级类别开始,逐级展开子类别,以减少前端处理工作。解决方案可能涉及递归函数或动态遍历数据结构,确保所有子类别都被正确地包含在内。
摘要由CSDN通过智能技术生成

[我正在使用WordPress REST API来获取系统中的类别列表,其中包括层次结构数据,但是到目前为止,我仍无法找出将这些数据转换为关联数组的一种干净方法。

我拥有的数据看起来像这样(JSON):[

{

"id": 445,

"parent": 0,

"is_parent": true,

"count": 1364

},

{

"id": 450,

"parent": 0,

"is_parent": true,

"count": 769

},

{

"id": 641,

"parent": 0,

"is_parent": true,

"count": 5936

},

{

"id": 670,

"parent": 0,

"is_parent": true,

"count": 585

},

{

"id": 686,

"parent": 0,

"is_parent": true,

"count": 195

},

{

"id": 447,

"parent": 445,

"is_parent": true,

"count": 46

},

{

"id": 458,

"parent": 445,

"is_parent": false,

"count": 15

},

{

"id": 493,

"parent": 445,

"is_parent": false,

"count": 93

},

{

"id": 495,

"parent": 445,

"is_parent": false,

"count": 12

},

{

"id": 514,

"parent": 445,

"is_parent": false,

"count": 86

},

{

"id": 517,

"parent": 445,

"is_parent": false,

"count": 11

},

{

"id": 520,

"parent": 445,

"is_parent": false,

"count": 6

},

{

"id": 522,

"parent": 445,

"is_parent": false,

"count": 19

},

{

"id": 524,

"parent": 445,

"is_parent": false,

"count": 100

},

{

"id": 526,

"parent": 445,

"is_parent": false,

"count": 15

},

{

"id": 529,

"parent": 445,

"is_parent": true,

"count": 615

},

{

"id": 659,

"parent": 445,

"is_parent": true,

"count": 329

},

{

"id": 448,

"parent": 447,

"is_parent": false,

"count": 13

},

{

"id": 455,

"parent": 447,

"is_parent": false,

"count": 5

},

{

"id": 456,

"parent": 447,

"is_parent": false,

"count": 13

},

{

"id": 461,

"parent": 447,

"is_parent": false,

"count": 15

},

{

"id": 451,

"parent": 450,

"is_parent": true,

"count": 46

},

{

"id": 459,

"parent": 450,

"is_parent": true,

"count": 139

},

{

"id": 499,

"parent": 450,

"is_parent": true,

"count": 329

},

{

"id": 515,

"parent": 450,

"is_parent": true,

"count": 229

},

{

"id": 518,

"parent": 450,

"is_parent": true,

"count": 11

},

{

"id": 527,

"parent": 450,

"is_parent": true,

"count": 15

},

{

"id": 452,

"parent": 451,

"is_parent": true,

"count": 46

},

{

"id": 453,

"parent": 452,

"is_parent": false,

"count": 13

},

{

"id": 454,

"parent": 452,

"is_parent": false,

"count": 5

},

{

"id": 457,

"parent": 452,

"is_parent": false,

"count": 13

},

{

"id": 462,

"parent": 452,

"is_parent": false,

"count": 15

},

{

"id": 460,

"parent": 459,

"is_parent": false,

"count": 15

},

{

"id": 494,

"parent": 459,

"is_parent": false,

"count": 93

},

{

"id": 496,

"parent": 459,

"is_parent": false,

"count": 12

},

{

"id": 523,

"parent": 459,

"is_parent": false,

"count": 19

},

{

"id": 500,

"parent": 499,

"is_parent": true,

"count": 329

},

{

"id": 501,

"parent": 500,

"is_parent": false,

"count": 34

},

{

"id": 503,

"parent": 500,

"is_parent": false,

"count": 29

},

{

"id": 505,

"parent": 500,

"is_parent": false,

"count": 60

},

{

"id": 507,

"parent": 500,

"is_parent": false,

"count": 59

},

{

"id": 509,

"parent": 500,

"is_parent": false,

"count": 37

},

{

"id": 511,

"parent": 500,

"is_parent": false,

"count": 46

},

{

"id": 513,

"parent": 500,

"is_parent": false,

"count": 64

},

{

"id": 516,

"parent": 515,

"is_parent": false,

"count": 86

},

{

"id": 521,

"parent": 515,

"is_parent": false,

"count": 6

},

{

"id": 525,

"parent": 515,

"is_parent": false,

"count": 100

},

{

"id": 738,

"parent": 515,

"is_parent": false,

"count": 17

},

{

"id": 739,

"parent": 515,

"is_parent": false,

"count": 20

},

{

"id": 519,

"parent": 518,

"is_parent": false,

"count": 11

},

{

"id": 528,

"parent": 527,

"is_parent": false,

"count": 15

},

{

"id": 530,

"parent": 529,

"is_parent": false,

"count": 20

},

{

"id": 531,

"parent": 529,

"is_parent": false,

"count": 13

},

{

"id": 532,

"parent": 529,

"is_parent": false,

"count": 12

},

{

"id": 533,

"parent": 529,

"is_parent": false,

"count": 32

},

{

"id": 534,

"parent": 529,

"is_parent": false,

"count": 33

},

{

"id": 535,

"parent": 529,

"is_parent": false,

"count": 7

},

{

"id": 536,

"parent": 529,

"is_parent": false,

"count": 36

},

{

"id": 537,

"parent": 529,

"is_parent": false,

"count": 27

},

{

"id": 538,

"parent": 529,

"is_parent": false,

"count": 20

},

{

"id": 539,

"parent": 529,

"is_parent": false,

"count": 14

},

{

"id": 540,

"parent": 529,

"is_parent": false,

"count": 26

},

{

"id": 541,

"parent": 529,

"is_parent": false,

"count": 28

},

{

"id": 542,

"parent": 529,

"is_parent": false,

"count": 27

},

{

"id": 543,

"parent": 529,

"is_parent": false,

"count": 10

},

{

"id": 544,

"parent": 529,

"is_parent": false,

"count": 14

},

{

"id": 545,

"parent": 529,

"is_parent": false,

"count": 25

},

{

"id": 546,

"parent": 529,

"is_parent": false,

"count": 29

},

{

"id": 547,

"parent": 529,

"is_parent": false,

"count": 11

},

{

"id": 548,

"parent": 529,

"is_parent": false,

"count": 10

},

{

"id": 549,

"parent": 529,

"is_parent": false,

"count": 41

},

{

"id": 550,

"parent": 529,

"is_parent": false,

"count": 6

},

{

"id": 551,

"parent": 529,

"is_parent": false,

"count": 14

},

{

"id": 552,

"parent": 529,

"is_parent": false,

"count": 65

},

{

"id": 553,

"parent": 529,

"is_parent": false,

"count": 23

},

{

"id": 554,

"parent": 529,

"is_parent": false,

"count": 16

},

{

"id": 555,

"parent": 529,

"is_parent": false,

"count": 22

},

{

"id": 556,

"parent": 529,

"is_parent": false,

"count": 34

},

{

"id": 740,

"parent": 529,

"is_parent": false,

"count": 17

},

{

"id": 650,

"parent": 641,

"is_parent": true,

"count": 1735

},

{

"id": 656,

"parent": 641,

"is_parent": true,

"count": 4201

},

{

"id": 651,

"parent": 650,

"is_parent": false,

"count": 237

},

{

"id": 652,

"parent": 650,

"is_parent": false,

"count": 185

},

{

"id": 653,

"parent": 650,

"is_parent": false,

"count": 377

},

{

"id": 654,

"parent": 650,

"is_parent": false,

"count": 165

},

{

"id": 655,

"parent": 650,

"is_parent": false,

"count": 340

},

{

"id": 657,

"parent": 650,

"is_parent": false,

"count": 431

},

{

"id": 696,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 697,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 698,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 699,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 700,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 701,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 702,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 703,

"parent": 656,

"is_parent": false,

"count": 500

},

{

"id": 704,

"parent": 656,

"is_parent": false,

"count": 201

},

{

"id": 660,

"parent": 659,

"is_parent": false,

"count": 34

},

{

"id": 661,

"parent": 659,

"is_parent": false,

"count": 29

},

{

"id": 662,

"parent": 659,

"is_parent": false,

"count": 60

},

{

"id": 663,

"parent": 659,

"is_parent": false,

"count": 59

},

{

"id": 664,

"parent": 659,

"is_parent": false,

"count": 37

},

{

"id": 665,

"parent": 659,

"is_parent": false,

"count": 46

},

{

"id": 666,

"parent": 659,

"is_parent": false,

"count": 64

},

{

"id": 671,

"parent": 670,

"is_parent": false,

"count": 65

},

{

"id": 672,

"parent": 670,

"is_parent": false,

"count": 52

},

{

"id": 673,

"parent": 670,

"is_parent": false,

"count": 53

},

{

"id": 674,

"parent": 670,

"is_parent": false,

"count": 109

},

{

"id": 675,

"parent": 670,

"is_parent": false,

"count": 34

},

{

"id": 676,

"parent": 670,

"is_parent": false,

"count": 68

},

{

"id": 677,

"parent": 670,

"is_parent": false,

"count": 49

},

{

"id": 678,

"parent": 670,

"is_parent": false,

"count": 55

},

{

"id": 679,

"parent": 670,

"is_parent": false,

"count": 38

},

{

"id": 680,

"parent": 670,

"is_parent": false,

"count": 62

},

{

"id": 681,

"parent": 686,

"is_parent": false,

"count": 52

},

{

"id": 682,

"parent": 686,

"is_parent": false,

"count": 50

},

{

"id": 683,

"parent": 686,

"is_parent": false,

"count": 30

},

{

"id": 684,

"parent": 686,

"is_parent": false,

"count": 39

},

{

"id": 685,

"parent": 686,

"is_parent": false,

"count": 24

}

]

此数据是通过WordPress函数get_terms(array('orderby' => 'parent'))获得的。

我的目标是最终将其作为层次结构返回,从带有"parent": 0的那些条目开始,然后向下直到"is_parent"为false的对象。

我尝试仅加载parent = 0的类别,然后为每个加载其子项,然后为每个加载那些子项,依此类推,这也许可行,但我不知道一种动态递归的干净方法,用这种方式建立一个数组。

我也尝试加载所有类别,然后尝试通过array_filter和array_map对它们进行排序,但是我也找不到一种很好的方法来确保遍历每个层次结构级别的每个父级的所有子级。

我现在想到了尝试从所有这些数据构建一个关联数组的想法,从"parent": 0开始(固定),然后向下遍历,但是我有[[no idea从哪里开始。我已经看到一些有关array_walk_recursive的信息,但是在这种情况下可以使用吗?此数据的最终表示应如下所示:

{

0: [

{

445: [

{

447: [

{

448: {

...no longer a parent here...

},

455: {

...also no longer a parent...

}

]

}

],

450: [

...

],

641: [

...

]

}

]

}之所以需要这种格式,是因为我希望将其轻松显示为网页中的层次结构菜单。从后端以这种格式返回它会减少前端的工作量。

这可能吗?如果是这样,我该怎么办?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值