Function/functions need to do the following:
- To accept an nested array tree
- Specifying witch sub array to flatten in my case I have ['children'] to flatten with parent items
Current tree:
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
(
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
What should it look like:
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
(
)
)
)
So for each parent object I need to extract it's children array(if It's not empty) and for each of child object(if It's not empty) I need to extract It's array and so on and so on.
It needs to keep the same ID order when extracted in the final array (this is the goal).
I've tried few similar methods with flattening arrays with some PHP SPL iterator functions and without them but I can't get the right order, in the end array there are missing objects and so far I am also looking to get the best performances out of this in case that there are 10.000 and more nested rows to handle.