3v4l.org

run code in 300+ PHP versions simultaneously
<?php $xml='<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetProjectsResponse xmlns="http://streamline/"> <GetProjectsResult> <ProjectWrapper> <UID>464c2da2-d365-4235-b7de-2dc39be34c71</UID> <ParentProjectId>3d6922ef-b925-478c-99b8-797a69c03ec2</ParentProjectId> <Name>План-график проекта</Name> </ProjectWrapper> <ProjectWrapper> <UID>7317a8d8-5911-42cd-84bd-8da33e43a6d0</UID> <ParentProjectId>464c2da2-d365-4235-b7de-2dc39be34c71</ParentProjectId> <Name>Старт проекта</Name> </ProjectWrapper> <ProjectWrapper> <UID>a20b554d-b00a-4278-8149-e62b65f30c5e</UID> <ParentProjectId>464c2da2-d365-4235-b7de-2dc39be34c71</ParentProjectId> <Name>Экспрес обследование</Name> </ProjectWrapper> <ProjectWrapper> <UID>73d090b2-38d6-40b4-af71-5c99a833c5db</UID> <ParentProjectId>a20b554d-b00a-4278-8149-e62b65f30c5e</ParentProjectId> <Name>Подготовка шаблонов проектных документов</Name> </ProjectWrapper> <ProjectWrapper> <UID>351b4b19-1bde-4a0c-9db4-e337da3fe8c3</UID> <ParentProjectId>73d090b2-38d6-40b4-af71-5c99a833c5db</ParentProjectId> <Name>Реестр требований к целевой системе</Name> </ProjectWrapper> <ProjectWrapper> <UID>7e39327e-3685-4afe-90d1-8b014b08e9c6</UID> <ParentProjectId>a20b554d-b00a-4278-8149-e62b65f30c5e</ParentProjectId> <Name>Анализ трех копий баз в разрезе функциональных блоков</Name> </ProjectWrapper> </GetProjectsResult> </GetProjectsResponse> </soap:Body> </soap:Envelope>'; //$xml=str_replace('soap:','',$xml); //Загружаем XML $soap_obj=simplexml_load_string($xml,null,0,'soap',1)->xpath('//soap:Body')[0]; $pr_w=$soap_obj->GetProjectsResponse->GetProjectsResult->ProjectWrapper; foreach($pr_w as $p){ //Преобразуем список в массив $projects["$p->UID"]=['name'=>"$p->Name",'parent'=>"$p->ParentProjectId"]; } print_r($projects); foreach($projects as $UID=>$p){ if(isset($projects[$p['parent']])){ //Ищем родителя $projects[$p['parent']]['children'][$UID]=$p; //Перекладываем в родителя unset($projects[$UID]); //Удаляем из основного массива } } print_r($projects);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 18, Position 2 = 30
Branch analysis from position: 18
2 jumps found. (Code = 78) Position 1 = 19, Position 2 = 30
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 18
Branch analysis from position: 18
Branch analysis from position: 30
2 jumps found. (Code = 77) Position 1 = 35, Position 2 = 47
Branch analysis from position: 35
2 jumps found. (Code = 78) Position 1 = 36, Position 2 = 47
Branch analysis from position: 36
2 jumps found. (Code = 43) Position 1 = 40, Position 2 = 46
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
Branch analysis from position: 46
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 47
Branch analysis from position: 30
filename:       /in/eJEWJ
function name:  (null)
number of ops:  52
compiled vars:  !0 = $xml, !1 = $soap_obj, !2 = $pr_w, !3 = $p, !4 = $projects, !5 = $UID
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, '%3C%3Fxml+version%3D%221.0%22+encoding%3D%22utf-8%22%3F%3E%0A%3Csoap%3AEnvelope+xmlns%3Asoap%3D%22http%3A%2F%2Fschemas.xmlsoap.org%2Fsoap%2Fenvelope%2F%22+xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22+xmlns%3Axsd%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%22%3E%0A++++%3Csoap%3ABody%3E%0A++++++++%3CGetProjectsResponse+xmlns%3D%22http%3A%2F%2Fstreamline%2F%22%3E%0A++++++++++++%3CGetProjectsResult%3E%0A++++++++++++++++%3CProjectWrapper%3E%0A++++++++++++++++++++%3CUID%3E464c2da2-d365-4235-b7de-2dc39be34c71%3C%2FUID%3E%0A++++++++++++++++++++%3CParentProjectId%3E3d6922ef-b925-478c-99b8-797a69c03ec2%3C%2FParentProjectId%3E%0A++++++++++++++++++++%3CName%3E%D0%9F%D0%BB%D0%B0%D0%BD-%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0%3C%2FName%3E%0A++++++++++++++++%3C%2FProjectWrapper%3E%0A++++++++++++++++%3CProjectWrapper%3E%0A++++++++++++++++++++%3CUID%3E7317a8d8-5911-42cd-84bd-8da33e43a6d0%3C%2FUID%3E%0A++++++++++++++++++++%3CParentProjectId%3E464c2da2-d365-4235-b7de-2dc39be34c71%3C%2FParentProjectId%3E%0A++++++++++++++++++++%3CName%3E%D0%A1%D1%82%D0%B0%D1%80%D1%82+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0%3C%2FName%3E%0A++++++++++++++++%3C%2FProjectWrapper%3E%0A++++++++++++++++%3CProjectWrapper%3E%0A++++++++++++++++++++%3CUID%3Ea20b554d-b00a-4278-8149-e62b65f30c5e%3C%2FUID%3E%0A++++++++++++++++++++%3CParentProjectId%3E464c2da2-d365-4235-b7de-2dc39be34c71%3C%2FParentProjectId%3E%0A++++++++++++++++++++%3CName%3E%D0%AD%D0%BA%D1%81%D0%BF%D1%80%D0%B5%D1%81+%D0%BE%D0%B1%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%3C%2FName%3E%0A++++++++++++++++%3C%2FProjectWrapper%3E%0A++++++++++++++++%3CProjectWrapper%3E%0A++++++++++++++++++++%3CUID%3E73d090b2-38d6-40b4-af71-5c99a833c5db%3C%2FUID%3E%0A++++++++++++++++++++%3CParentProjectId%3Ea20b554d-b00a-4278-8149-e62b65f30c5e%3C%2FParentProjectId%3E%0A++++++++++++++++++++%3CName%3E%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0+%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D1%85+%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2%3C%2FName%3E%0A++++++++++++++++%3C%2FProjectWrapper%3E%0A++++++++++++++++%3CProjectWrapper%3E%0A++++++++++++++++++++%3CUID%3E351b4b19-1bde-4a0c-9db4-e337da3fe8c3%3C%2FUID%3E%0A++++++++++++++++++++%3CParentProjectId%3E73d090b2-38d6-40b4-af71-5c99a833c5db%3C%2FParentProjectId%3E%0A++++++++++++++++++++%3CName%3E%D0%A0%D0%B5%D0%B5%D1%81%D1%82%D1%80+%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9+%D0%BA+%D1%86%D0%B5%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5%3C%2FName%3E%0A++++++++++++++++%3C%2FProjectWrapper%3E%0A++++++++++++++++%3CProjectWrapper%3E%0A++++++++++++++++++++%3CUID%3E7e39327e-3685-4afe-90d1-8b014b08e9c6%3C%2FUID%3E%0A++++++++++++++++++++%3CParentProjectId%3Ea20b554d-b00a-4278-8149-e62b65f30c5e%3C%2FParentProjectId%3E%0A++++++++++++++++++++%3CName%3E%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7+%D1%82%D1%80%D0%B5%D1%85+%D0%BA%D0%BE%D0%BF%D0%B8%D0%B9+%D0%B1%D0%B0%D0%B7+%D0%B2+%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D0%B7%D0%B5+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85+%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2%3C%2FName%3E%0A++++++++++++++++%3C%2FProjectWrapper%3E%0A++++++++++++%3C%2FGetProjectsResult%3E%0A++++++++%3C%2FGetProjectsResponse%3E%0A++++%3C%2Fsoap%3ABody%3E%0A%3C%2Fsoap%3AEnvelope%3E'
   44     1        INIT_FCALL                                               'simplexml_load_string'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 null
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 'soap'
          6        SEND_VAL                                                 1
          7        DO_ICALL                                         $7      
          8        INIT_METHOD_CALL                                         $7, 'xpath'
          9        SEND_VAL_EX                                              '%2F%2Fsoap%3ABody'
         10        DO_FCALL                                      0  $8      
         11        FETCH_DIM_R                                      ~9      $8, 0
         12        ASSIGN                                                   !1, ~9
   45    13        FETCH_OBJ_R                                      ~11     !1, 'GetProjectsResponse'
         14        FETCH_OBJ_R                                      ~12     ~11, 'GetProjectsResult'
         15        FETCH_OBJ_R                                      ~13     ~12, 'ProjectWrapper'
         16        ASSIGN                                                   !2, ~13
   47    17      > FE_RESET_R                                       $15     !2, ->30
         18    > > FE_FETCH_R                                               $15, !3, ->30
   48    19    >   FETCH_OBJ_R                                      ~16     !3, 'UID'
         20        CAST                                          6  ~17     ~16
         21        FETCH_OBJ_R                                      ~19     !3, 'Name'
         22        CAST                                          6  ~20     ~19
         23        INIT_ARRAY                                       ~21     ~20, 'name'
         24        FETCH_OBJ_R                                      ~22     !3, 'ParentProjectId'
         25        CAST                                          6  ~23     ~22
         26        ADD_ARRAY_ELEMENT                                ~21     ~23, 'parent'
         27        ASSIGN_DIM                                               !4, ~17
         28        OP_DATA                                                  ~21
   47    29      > JMP                                                      ->18
         30    >   FE_FREE                                                  $15
   51    31        INIT_FCALL                                               'print_r'
         32        SEND_VAR                                                 !4
         33        DO_ICALL                                                 
   53    34      > FE_RESET_R                                       $25     !4, ->47
         35    > > FE_FETCH_R                                       ~26     $25, !3, ->47
         36    >   ASSIGN                                                   !5, ~26
   54    37        FETCH_DIM_R                                      ~28     !3, 'parent'
         38        ISSET_ISEMPTY_DIM_OBJ                         0          !4, ~28
         39      > JMPZ                                                     ~29, ->46
   55    40    >   FETCH_DIM_R                                      ~30     !3, 'parent'
         41        FETCH_DIM_W                                      $31     !4, ~30
         42        FETCH_DIM_W                                      $32     $31, 'children'
         43        ASSIGN_DIM                                               $32, !5
         44        OP_DATA                                                  !3
   56    45        UNSET_DIM                                                !4, !5
   53    46    > > JMP                                                      ->35
         47    >   FE_FREE                                                  $25
   60    48        INIT_FCALL                                               'print_r'
         49        SEND_VAR                                                 !4
         50        DO_ICALL                                                 
         51      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
149.49 ms | 1020 KiB | 15 Q