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) { echo substr($values, strrpos($values, "/")) . "\n\n"; continue; $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 = 52
Branch analysis from position: 4
2 jumps found. (Code = 78) Position 1 = 5, Position 2 = 52
Branch analysis from position: 5
1 jumps found. (Code = 42) Position 1 = 4
Branch analysis from position: 4
Branch analysis from position: 52
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
filename:       /in/oQPuL
function name:  (null)
number of ops:  58
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, ->52
          4    > > FE_FETCH_R                                       ~13     $12, !3, ->52
          5    >   ASSIGN                                                   !4, ~13
   62     6        INIT_FCALL                                               'substr'
          7        SEND_VAR                                                 !3
          8        INIT_FCALL                                               'strrpos'
          9        SEND_VAR                                                 !3
         10        SEND_VAL                                                 '%2F'
         11        DO_ICALL                                         $15     
         12        SEND_VAR                                                 $15
         13        DO_ICALL                                         $16     
         14        CONCAT                                           ~17     $16, '%0A%0A'
         15        ECHO                                                     ~17
   63    16      > JMP                                                      ->4
   65    17*       INIT_FCALL                                               'explode'
         18*       SEND_VAL                                                 '%2F'
         19*       SEND_VAR                                                 !3
         20*       DO_ICALL                                         $18     
         21*       ASSIGN                                                   !5, $18
   67    22*       INIT_FCALL                                               'array_pop'
         23*       SEND_REF                                                 !5
         24*       DO_ICALL                                         $20     
         25*       ASSIGN                                                   !6, $20
   70    26*       COUNT                                            ~22     !5
         27*       IS_SMALLER                                               1, ~22
         28*       JMPZ                                                     ~23, ->35
   71    29*       INIT_FCALL                                               'implode'
         30*       SEND_VAL                                                 '%2F'
         31*       SEND_VAR                                                 !5
         32*       DO_ICALL                                         $24     
         33*       ASSIGN                                                   !7, $24
         34*       JMP                                                      ->37
   73    35*       FETCH_DIM_R                                      ~26     !5, 0
         36*       ASSIGN                                                   !7, ~26
   76    37*       INIT_FCALL                                               'end'
         38*       SEND_REF                                                 !5
         39*       DO_ICALL                                                 
   78    40*       JMP                                                      ->46
   80    41*       INIT_ARRAY                                       ~30     !3, 'id'
   81    42*       ADD_ARRAY_ELEMENT                                ~30     !7, 'parent'
   82    43*       ADD_ARRAY_ELEMENT                                ~30     !6, 'text'
   79    44*       ASSIGN_DIM                                               !1
   82    45*       OP_DATA                                                  ~30
   78    46*       INIT_FCALL                                               'prev'
         47*       SEND_REF                                                 !5
         48*       DO_ICALL                                         $31     
         49*       ASSIGN                                           ~32     !8, $31
         50*       JMPNZ                                                    ~32, ->41
   60    51*       JMP                                                      ->4
         52    >   FE_FREE                                                  $12
   88    53        INIT_FCALL                                               'json_encode'
         54        SEND_VAR                                                 !1
         55        DO_ICALL                                         $33     
         56        ECHO                                                     $33
         57      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
169.02 ms | 1405 KiB | 29 Q