3v4l.org

run code in 300+ PHP versions simultaneously
<?php $comments = [ 1 => ['content' => "The first comment", 'parent' => 0], 2 => ['content' => "The second comment", 'parent' => 0], 3 => ['content' => "Reply of first comment", 'parent' => 1], 4 => ['content' => "Another reply of first comemnt", 'parent' => 1], 5 => ['content' => "Reply of a reply of the first comment", 'parent' => 4] ]; foreach($comments as $id => &$value) { # check if there is a parent if ($parentId = $value['parent']) { $comments[$parentId]['comments'][$id] =& $value; # add child to parent unset($comments[$id]); # remove reference from topmost level } } unset($value); # remove iterator reference print_r($comments); # your tree // foreach($comments as $id => &$c) { // if (isset($comments[$c['parent']])) { // $comments[$c['parent']]['comments'][$id] =& $c; // unset($comments[$id]); // } // } // var_dump($comments);
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Warning: Undefined array key "parent" in /in/q2ZeV on line 15 Array ( [1] => Array ( [content] => The first comment [parent] => 0 [comments] => Array ( [3] => Array ( [content] => Reply of first comment [parent] => 1 ) [4] => Array ( [content] => Another reply of first comemnt [parent] => 1 ) ) ) [2] => Array ( [content] => The second comment [parent] => 0 ) [4] => Array ( [comments] => Array ( [5] => Array ( [content] => Reply of a reply of the first comment [parent] => 4 ) ) ) )
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.16 - 7.3.31, 7.4.0 - 7.4.33
Notice: Undefined index: parent in /in/q2ZeV on line 15 Array ( [1] => Array ( [content] => The first comment [parent] => 0 [comments] => Array ( [3] => Array ( [content] => Reply of first comment [parent] => 1 ) [4] => Array ( [content] => Another reply of first comemnt [parent] => 1 ) ) ) [2] => Array ( [content] => The second comment [parent] => 0 ) [4] => Array ( [comments] => Array ( [5] => Array ( [content] => Reply of a reply of the first comment [parent] => 4 ) ) ) )
Output for 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.7 - 5.6.28, 7.3.0 - 7.3.1, 7.3.32 - 7.3.33
Array ( [1] => Array ( [content] => The first comment [parent] => 0 [comments] => Array ( [3] => Array ( [content] => Reply of first comment [parent] => 1 ) [4] => Array ( [content] => Another reply of first comemnt [parent] => 1 ) ) ) [2] => Array ( [content] => The second comment [parent] => 0 ) [4] => Array ( [comments] => Array ( [5] => Array ( [content] => Reply of a reply of the first comment [parent] => 4 ) ) ) )

preferences:
207.52 ms | 404 KiB | 244 Q