3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = array("/Expurgo", "/Famosos e Etc/Ego", "/Famosos e Etc/Ego/40 Graus", "/Famosos e Etc/Ego/40 Graus/Home", "/Famosos e Etc/Ego/Beleza", "/Famosos e Etc/Ego/Beleza/Home", "/Famosos e Etc/Ego/Carnaval", "/Famosos e Etc/Ego/Especiais/Avon", "/Famosos e Etc/Ego/Especiais/Dia das Maes", "/Famosos e Etc/Ego/Especiais/Lollapalooza", "/Famosos e Etc/Ego/Especiais/Lollapalooza/Home", "/Famosos e Etc/Ego/Especiais/Loreal", "/Famosos e Etc/Ego/Especiais/Malwee", "/Famosos e Etc/Ego/Especiais/Natal", "/Famosos e Etc/Ego/Especiais/Pascoa", "/Famosos e Etc/Ego/Especiais/Rock in Rio", "/Famosos e Etc/Ego/Especiais/Rock in Rio/Home", "/Famosos e Etc/Ego/Especiais/The Body Shop", "/Famosos e Etc/Ego/Gravidez", "/Famosos e Etc/Ego/Gravidez/Home", "/Famosos e Etc/Ego/Home", "/Famosos e Etc/Ego/Horoscopo", "/Famosos e Etc/Ego/Horoscopo/Home", "/Famosos e Etc/Ego/Moda", "/Famosos e Etc/Ego/Moda/Home", "/Famosos e Etc/Ego/Teen", "/Famosos e Etc/Ego/Teen/Home", "/Famosos e Etc/Home", "/G1/Agronegocios", "/G1/Agronegocios/Home", "/G1/Bem Estar", "/G1/Bem Estar/Home", "/G1/Blogs e Colunas", "/G1/Blogs e Colunas/Altieres Rohr", "/G1/Blogs e Colunas/Alysson Muotri", "/G1/Blogs e Colunas/Andrea Ramal", "/G1/Blogs e Colunas/Bruno Medina", "/G1/Blogs e Colunas/Cassio Barbosa", "/G1/Blogs e Colunas/Cristina Lobo", "/G1/Blogs e Colunas/Geneton Moraes Neto", "/G1/Blogs e Colunas/Luciano Trigo", "/G1/Blogs e Colunas/Paulo Coelho", "/G1/Blogs e Colunas/Redacao", "/G1/Blogs e Colunas/Ronaldo Prass", "/G1/Blogs e Colunas/Sergio Nogueira", "/G1/Blogs e Colunas/Startup", "/G1/Blogs e Colunas/Thais Heredia", "/G1/Blogs e Colunas/Viver Noronha", "/G1/Blogs e Colunas/Yvonne Maggie", "/G1/Blogs e Colunas/Zeca Camargo", "/GE", "/GE/Futebol", "/GE/Futebol/Especiais", "/GE/Futebol/Especiais/Home"); $return_array = array(); $temp_array = array(); foreach ($array as $key => $values) { $part = explode("/", $values); // Separa o ultimo noh $last_node = array_pop($part); // Se tem mais de um item junta o array if (count($part) > 1){ $parent_id = implode("/", $part); } else { // Senao pega a unica posicao $parent_id = $part[0]; } end($part); while ($level = prev($part)) { $return_array[] = array( "id" => $values, "parent" => $parent_id, "text" => $last_node ); } } echo json_encode($return_array);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 4, Position 2 = 41
Branch analysis from position: 4
2 jumps found. (Code = 78) Position 1 = 5, Position 2 = 41
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 24
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
2 jumps found. (Code = 44) Position 1 = 40, Position 2 = 30
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 4
Branch analysis from position: 4
Branch analysis from position: 30
2 jumps found. (Code = 44) Position 1 = 40, Position 2 = 30
Branch analysis from position: 40
Branch analysis from position: 30
Branch analysis from position: 24
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
Branch analysis from position: 41
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 41
filename:       /in/ofYWd
function name:  (null)
number of ops:  47
compiled vars:  !0 = $array, !1 = $return_array, !2 = $temp_array, !3 = $values, !4 = $key, !5 = $part, !6 = $last_node, !7 = $parent_id, !8 = $level
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, <array>
   57     1        ASSIGN                                                   !1, <array>
   58     2        ASSIGN                                                   !2, <array>
   60     3      > FE_RESET_R                                       $12     !0, ->41
          4    > > FE_FETCH_R                                       ~13     $12, !3, ->41
          5    >   ASSIGN                                                   !4, ~13
   62     6        INIT_FCALL                                               'explode'
          7        SEND_VAL                                                 '%2F'
          8        SEND_VAR                                                 !3
          9        DO_ICALL                                         $15     
         10        ASSIGN                                                   !5, $15
   64    11        INIT_FCALL                                               'array_pop'
         12        SEND_REF                                                 !5
         13        DO_ICALL                                         $17     
         14        ASSIGN                                                   !6, $17
   67    15        COUNT                                            ~19     !5
         16        IS_SMALLER                                               1, ~19
         17      > JMPZ                                                     ~20, ->24
   68    18    >   INIT_FCALL                                               'implode'
         19        SEND_VAL                                                 '%2F'
         20        SEND_VAR                                                 !5
         21        DO_ICALL                                         $21     
         22        ASSIGN                                                   !7, $21
         23      > JMP                                                      ->26
   70    24    >   FETCH_DIM_R                                      ~23     !5, 0
         25        ASSIGN                                                   !7, ~23
   73    26    >   INIT_FCALL                                               'end'
         27        SEND_REF                                                 !5
         28        DO_ICALL                                                 
   75    29      > JMP                                                      ->35
   77    30    >   INIT_ARRAY                                       ~27     !3, 'id'
   78    31        ADD_ARRAY_ELEMENT                                ~27     !7, 'parent'
   79    32        ADD_ARRAY_ELEMENT                                ~27     !6, 'text'
   76    33        ASSIGN_DIM                                               !1
   79    34        OP_DATA                                                  ~27
   75    35    >   INIT_FCALL                                               'prev'
         36        SEND_REF                                                 !5
         37        DO_ICALL                                         $28     
         38        ASSIGN                                           ~29     !8, $28
         39      > JMPNZ                                                    ~29, ->30
   60    40    > > JMP                                                      ->4
         41    >   FE_FREE                                                  $12
   85    42        INIT_FCALL                                               'json_encode'
         43        SEND_VAR                                                 !1
         44        DO_ICALL                                         $30     
         45        ECHO                                                     $30
         46      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
170.07 ms | 1400 KiB | 25 Q