3v4l.org

run code in 300+ PHP versions simultaneously
<?php $values=[ ["id"=> 0,"dn"=> "OU=Microsoft Exchange Security Groups,DC=local,DC=com"], ["id"=> 1,"dn"=> "OU=Domain Controllers,DC=local,DC=com"], ["id"=> 2,"dn"=> "OU=DIT,OU=DVIOU,DC=local,DC=com"], ["id"=> 3,"dn"=> "OU=Service Accounts,DC=local,DC=com"], ["id"=> 4,"dn"=> "OU=STT,OU=DIT,OU=DVIOU,DC=local,DC=com"], ["id"=> 5,"dn"=> "OU=STX,OU=DIT,OU=DVIOU,DC=local,DC=com"], ["id"=> 6,"dn"=> "OU=DVIOU,DC=local,DC=com"], ["id"=> 7,"dn"=> "OU=DPW,OU=DVIOU,DC=local,DC=com"], ["id"=> 8,"dn"=> "OU=STT,OU=DPW,OU=DVIOU,DC=local,DC=com"], ["id"=> 9,"dn"=> "OU=OLG,OU=DVIOU,DC=local,DC=com"], ["id"=> 10,"dn"=> "OU=DIT_Consultants,OU=DIT,OU=DVIOU,DC=local,DC=com"], ["id"=> 11,"dn"=> "OU=911,OU=DVIOU,DC=local,DC=com"], ["id"=> 12,"dn"=> "OU=Users,OU=911,OU=DVIOU,DC=local,DC=com"], ["id"=> 13,"dn"=> "OU=PERB,OU=DVIOU,DC=local,DC=com"], ["id"=> 14,"dn"=> "OU=STX,OU=PERB,OU=DVIOU,DC=local,DC=com"] ]; //Let's make dictionary foreach($values as $val){ //Find all OU preg_match_all('/OU=([^,]+)/',$val['dn'],$m); //print_r($m); $name=$m[1][0]; //Add elements to array $val=array_merge($val,[ 'name'=>$name, 'parent'=>0, //This will be done later 'level'=>count($m[1]), 'parent_name'=>$m[1][1] ?? '', ]); $dict[$name]=$val; } print_r($dict); //Let's get parent IDs from dictionary by name foreach($dict as &$val) $val['parent']=$dict[$val['parent_name']]['id'] ?? 0; print_r($dict); //Remove keys $result=array_values($dict); //Sort by IDs sort($result); print_r($result);
Output for 8.2.0 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.14, 8.5.0
Array ( [Microsoft Exchange Security Groups] => Array ( [id] => 0 [dn] => OU=Microsoft Exchange Security Groups,DC=local,DC=com [name] => Microsoft Exchange Security Groups [parent] => 0 [level] => 1 [parent_name] => ) [Domain Controllers] => Array ( [id] => 1 [dn] => OU=Domain Controllers,DC=local,DC=com [name] => Domain Controllers [parent] => 0 [level] => 1 [parent_name] => ) [DIT] => Array ( [id] => 2 [dn] => OU=DIT,OU=DVIOU,DC=local,DC=com [name] => DIT [parent] => 0 [level] => 2 [parent_name] => DVIOU ) [Service Accounts] => Array ( [id] => 3 [dn] => OU=Service Accounts,DC=local,DC=com [name] => Service Accounts [parent] => 0 [level] => 1 [parent_name] => ) [STT] => Array ( [id] => 8 [dn] => OU=STT,OU=DPW,OU=DVIOU,DC=local,DC=com [name] => STT [parent] => 0 [level] => 3 [parent_name] => DPW ) [STX] => Array ( [id] => 14 [dn] => OU=STX,OU=PERB,OU=DVIOU,DC=local,DC=com [name] => STX [parent] => 0 [level] => 3 [parent_name] => PERB ) [DVIOU] => Array ( [id] => 6 [dn] => OU=DVIOU,DC=local,DC=com [name] => DVIOU [parent] => 0 [level] => 1 [parent_name] => ) [DPW] => Array ( [id] => 7 [dn] => OU=DPW,OU=DVIOU,DC=local,DC=com [name] => DPW [parent] => 0 [level] => 2 [parent_name] => DVIOU ) [OLG] => Array ( [id] => 9 [dn] => OU=OLG,OU=DVIOU,DC=local,DC=com [name] => OLG [parent] => 0 [level] => 2 [parent_name] => DVIOU ) [DIT_Consultants] => Array ( [id] => 10 [dn] => OU=DIT_Consultants,OU=DIT,OU=DVIOU,DC=local,DC=com [name] => DIT_Consultants [parent] => 0 [level] => 3 [parent_name] => DIT ) [911] => Array ( [id] => 11 [dn] => OU=911,OU=DVIOU,DC=local,DC=com [name] => 911 [parent] => 0 [level] => 2 [parent_name] => DVIOU ) [Users] => Array ( [id] => 12 [dn] => OU=Users,OU=911,OU=DVIOU,DC=local,DC=com [name] => Users [parent] => 0 [level] => 3 [parent_name] => 911 ) [PERB] => Array ( [id] => 13 [dn] => OU=PERB,OU=DVIOU,DC=local,DC=com [name] => PERB [parent] => 0 [level] => 2 [parent_name] => DVIOU ) ) Array ( [Microsoft Exchange Security Groups] => Array ( [id] => 0 [dn] => OU=Microsoft Exchange Security Groups,DC=local,DC=com [name] => Microsoft Exchange Security Groups [parent] => 0 [level] => 1 [parent_name] => ) [Domain Controllers] => Array ( [id] => 1 [dn] => OU=Domain Controllers,DC=local,DC=com [name] => Domain Controllers [parent] => 0 [level] => 1 [parent_name] => ) [DIT] => Array ( [id] => 2 [dn] => OU=DIT,OU=DVIOU,DC=local,DC=com [name] => DIT [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [Service Accounts] => Array ( [id] => 3 [dn] => OU=Service Accounts,DC=local,DC=com [name] => Service Accounts [parent] => 0 [level] => 1 [parent_name] => ) [STT] => Array ( [id] => 8 [dn] => OU=STT,OU=DPW,OU=DVIOU,DC=local,DC=com [name] => STT [parent] => 7 [level] => 3 [parent_name] => DPW ) [STX] => Array ( [id] => 14 [dn] => OU=STX,OU=PERB,OU=DVIOU,DC=local,DC=com [name] => STX [parent] => 13 [level] => 3 [parent_name] => PERB ) [DVIOU] => Array ( [id] => 6 [dn] => OU=DVIOU,DC=local,DC=com [name] => DVIOU [parent] => 0 [level] => 1 [parent_name] => ) [DPW] => Array ( [id] => 7 [dn] => OU=DPW,OU=DVIOU,DC=local,DC=com [name] => DPW [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [OLG] => Array ( [id] => 9 [dn] => OU=OLG,OU=DVIOU,DC=local,DC=com [name] => OLG [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [DIT_Consultants] => Array ( [id] => 10 [dn] => OU=DIT_Consultants,OU=DIT,OU=DVIOU,DC=local,DC=com [name] => DIT_Consultants [parent] => 2 [level] => 3 [parent_name] => DIT ) [911] => Array ( [id] => 11 [dn] => OU=911,OU=DVIOU,DC=local,DC=com [name] => 911 [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [Users] => Array ( [id] => 12 [dn] => OU=Users,OU=911,OU=DVIOU,DC=local,DC=com [name] => Users [parent] => 11 [level] => 3 [parent_name] => 911 ) [PERB] => Array ( [id] => 13 [dn] => OU=PERB,OU=DVIOU,DC=local,DC=com [name] => PERB [parent] => 6 [level] => 2 [parent_name] => DVIOU ) ) Array ( [0] => Array ( [id] => 0 [dn] => OU=Microsoft Exchange Security Groups,DC=local,DC=com [name] => Microsoft Exchange Security Groups [parent] => 0 [level] => 1 [parent_name] => ) [1] => Array ( [id] => 1 [dn] => OU=Domain Controllers,DC=local,DC=com [name] => Domain Controllers [parent] => 0 [level] => 1 [parent_name] => ) [2] => Array ( [id] => 2 [dn] => OU=DIT,OU=DVIOU,DC=local,DC=com [name] => DIT [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [3] => Array ( [id] => 3 [dn] => OU=Service Accounts,DC=local,DC=com [name] => Service Accounts [parent] => 0 [level] => 1 [parent_name] => ) [4] => Array ( [id] => 6 [dn] => OU=DVIOU,DC=local,DC=com [name] => DVIOU [parent] => 0 [level] => 1 [parent_name] => ) [5] => Array ( [id] => 7 [dn] => OU=DPW,OU=DVIOU,DC=local,DC=com [name] => DPW [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [6] => Array ( [id] => 8 [dn] => OU=STT,OU=DPW,OU=DVIOU,DC=local,DC=com [name] => STT [parent] => 7 [level] => 3 [parent_name] => DPW ) [7] => Array ( [id] => 9 [dn] => OU=OLG,OU=DVIOU,DC=local,DC=com [name] => OLG [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [8] => Array ( [id] => 10 [dn] => OU=DIT_Consultants,OU=DIT,OU=DVIOU,DC=local,DC=com [name] => DIT_Consultants [parent] => 2 [level] => 3 [parent_name] => DIT ) [9] => Array ( [id] => 11 [dn] => OU=911,OU=DVIOU,DC=local,DC=com [name] => 911 [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [10] => Array ( [id] => 12 [dn] => OU=Users,OU=911,OU=DVIOU,DC=local,DC=com [name] => Users [parent] => 11 [level] => 3 [parent_name] => 911 ) [11] => Array ( [id] => 13 [dn] => OU=PERB,OU=DVIOU,DC=local,DC=com [name] => PERB [parent] => 6 [level] => 2 [parent_name] => DVIOU ) [12] => Array ( [id] => 14 [dn] => OU=STX,OU=PERB,OU=DVIOU,DC=local,DC=com [name] => STX [parent] => 13 [level] => 3 [parent_name] => PERB ) )
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.

preferences:
68.84 ms | 419 KiB | 5 Q