【发布时间】:2018-01-04 04:18:19
【问题描述】:
函数/函数需要做到以下几点:
- 接受嵌套数组树
- 在我的情况下指定要展平的女巫子数组我有 ['children'] 与父项一起展平
当前树:
Array
(
[0] => stdClass Object
(
[id] => 1
[comment_threads_id] => 1
[users_id] => 1
[parent_id] => 0
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 2
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 1
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[1] => stdClass Object
(
[id] => 247
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 1
[message] =>
[created_at] => 2018-01-03 04:30:07
[children] => Array
(
)
)
)
)
[1] => stdClass Object
(
[id] => 3
[comment_threads_id] => 1
[users_id] => 1
[parent_id] => 0
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 4
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 3
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 250
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 4
[message] =>
[created_at] => 2018-01-03 05:03:09
[children] => Array
(
)
)
[1] => stdClass Object
(
[id] => 251
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 4
[message] =>
[created_at] => 2018-01-03 05:25:58
[children] => Array
(
[0] => stdClass Object
(
[id] => 252
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 251
[message] =>
[created_at] => 2018-01-03 05:05:09
[children] => Array
(
)
)
)
)
)
)
[1] => stdClass Object
(
[id] => 248
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 3
[message] =>
[created_at] => 2018-01-03 05:02:05
[children] => Array
(
)
)
)
)
[2] => stdClass Object
(
[id] => 5
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 0
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 6
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 5
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 7
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 6
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 8
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 7
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 9
[comment_threads_id] => 1
[users_id] => 1
[parent_id] => 8
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 10
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 9
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 11
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 10
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 12
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 11
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
[0] => stdClass Object
(
[id] => 13
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 12
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
它应该是什么样子:
Array
(
[0] => stdClass Object
(
[id] => 1
[comment_threads_id] => 1
[users_id] => 1
[parent_id] => 0
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[1] => stdClass Object
(
[id] => 2
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 1
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[2] => stdClass Object
(
[id] => 247
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 1
[message] =>
[created_at] => 2018-01-03 04:30:07
[children] => Array
(
)
)
[3] => stdClass Object
(
[id] => 3
[comment_threads_id] => 1
[users_id] => 1
[parent_id] => 0
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[4] => stdClass Object
(
[id] => 4
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 3
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[5] => stdClass Object
(
[id] => 250
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 4
[message] =>
[created_at] => 2018-01-03 05:03:09
[children] => Array
(
)
)
[6] => stdClass Object
(
[id] => 251
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 4
[message] =>
[created_at] => 2018-01-03 05:25:58
[children] => Array
(
)
)
[7] => stdClass Object
(
[id] => 252
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 251
[message] =>
[created_at] => 2018-01-03 05:05:09
[children] => Array
(
)
)
[8] => stdClass Object
(
[id] => 248
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 3
[message] =>
[created_at] => 2018-01-03 05:02:05
[children] => Array
(
)
)
[9] => stdClass Object
(
[id] => 5
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 0
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[10] => stdClass Object
(
[id] => 6
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 5
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[11] => stdClass Object
(
[id] => 7
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 6
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[12] => stdClass Object
(
[id] => 8
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 7
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[13] => stdClass Object
(
[id] => 9
[comment_threads_id] => 1
[users_id] => 1
[parent_id] => 8
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[14] => stdClass Object
(
[id] => 10
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 9
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[15] => stdClass Object
(
[id] => 11
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 10
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[16] => stdClass Object
(
[id] => 12
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 11
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
[17] => stdClass Object
(
[id] => 13
[comment_threads_id] => 1
[users_id] => 2
[parent_id] => 12
[message] => Lorem ipsum
[created_at] => 2018-01-03 04:21:49
[children] => Array
(
)
)
)
所以对于每个父对象我需要提取它的子数组(如果它不为空)并且对于每个子对象(如果它不为空)我需要提取它的数组等等。
在最终数组中提取时需要保持相同的ID顺序(这是目标)。
我尝试了一些类似的方法,使用一些 PHP SPL 迭代器函数和没有它们的扁平化数组,但我无法获得正确的顺序,最后数组缺少对象,到目前为止我也在寻找如果要处理 10.000 或更多的嵌套行,则性能最佳。
【问题讨论】:
标签: php arrays multidimensional-array nested