3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arrs = array( array('id'=>1,'name'=>'root','pid'=>0), array('id'=>2,'name'=>'root1','pid'=>0), array('id'=>3,'name'=>'level1','pid'=>1), array('id'=>4,'name'=>'level11','pid'=>1), array('id'=>5,'name'=>'leve21','pid'=>2), array('id'=>6,'name'=>'level2','pid'=>2) ); class digui{ function index($id,$arr){ echo $this->doarr($id,$arr); } private function doarr($id,$arr ){ foreach($arr as $key => $val){ if($id==$val['pid']){ if($val['pid']!=0) { $this->doarr($val['pid'],$arr); return $val['name']; } else return $val['name']; } } } } $d = new digui; //$d->index(3,$arrs); function test($a=0,&$result=array()){ $a++; if ($a<10) { $result[]=$a; test($a,$result); } echo $a; print_r($result); return $result; } function test1($a=0){ static $result=array(); $a++; if ($a<10) { $result[]=$a; test1($a); print_r($result); } return $result; } $arrs = array( array('id'=>1,'name'=>'root','pid'=>0), array('id'=>2,'name'=>'root1','pid'=>0), array('id'=>3,'name'=>'level1','pid'=>1), array('id'=>4,'name'=>'level11','pid'=>1), array('id'=>5,'name'=>'leve21','pid'=>2), array('id'=>6,'name'=>'level2','pid'=>2) ); function getree($data,$pid){ $tree = array(); foreach($data as $key=>$val){ if($pid == $val['pid']){ $val['pid'] = getree($data,$val['id']); $tree[] = $val; } } return $tree; } function getree1($data,$pid){ $tree = array(); foreach($data as $key=>$val){ if($pid==$val['pid']){ $val['pid'] = getree1($data,$val['id']); $tree[] = $val; } return $tree; } } $res = getree1($arrs,0); $rows = array( array( 'id' => 1, 'name' => 'dev', 'parentid' => 0 ), array( 'id' => 2, 'name' => 'php', 'parentid' => 1 ), array( 'id' => 3, 'name' => 'smarty', 'parentid' => 2 ), array( 'id' => 4, 'name' => 'life', 'parentid' => 0 ), array( 'id' => 5, 'name' => 'pdo', 'parentid' => 2 ), array( 'id' => 6, 'name' => 'pdo-mysql', 'parentid' => 5 ), array( 'id' => 7, 'name' => 'java', 'parentid' => 1 ) ); // 72648 // 84072 function buildtree($rows,$root_id){ $rescurtree = findchild($rows,0); print_r($rescurtree); } function findchild($rows,$id){ $childs = array(); foreach($rows as $k=>$v){ if($v['parentid']==$id) $childs[] = $v; } return $childs; } buildtree($rows,0);
Output for 5.6.0 - 5.6.26, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Array ( [0] => Array ( [id] => 1 [name] => dev [parentid] => 0 ) [1] => Array ( [id] => 4 [name] => life [parentid] => 0 ) )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Array ( [0] => Array ( [id] => 1 [name] => dev [parentid] => 0 ) [1] => Array ( [id] => 4 [name] => life [parentid] => 0 ) )

preferences:
153.62 ms | 402 KiB | 199 Q