3v4l.org

run code in 300+ PHP versions simultaneously
<?php $csv = <<<'CSV' produit nom_pdf type_pdf prive_pdf 1 ENTREE_AIR_AUTO_RE_FR_FR_28143161 Rapport_d_essai 0 1 M_FT_FR_FR_201803 Fiche_technique 0 100 AMD+C_FT_FR_FR_201901 Fiche_technique 0 1000 APDR_FT_FR_FR_201907 Fiche_technique 0 1000 ATTESTATION_A1_CONVENTIONNELS Procès-verbal 1 CSV; $lines = explode("\n", $csv); $headers = str_getcsv(array_shift($lines), ' '); $xw = new XMLWriter(); $xw->openMemory(); $xw->startDocument("1.0", "utf-8"); $xw->setIndent(true); $xw->setIndentString(' '); $xw->startElement('Products'); $prevprod = false; foreach ( $lines as $line ) { $data = array_combine($headers, str_getcsv($line, ' ')); if ( $data['produit'] !== $prevprod ) { if ( $prevprod ) $xw->endElement(); $prevprod = $data['produit']; $xw->startElement('produit'); $xw->writeAttribute('code', $data['produit']); } $xw->startElement('Fichier'); $xw->writeAttribute('nom_fichier', $data['nom_pdf']); $xw->writeAttribute('type_fichier', $data['type_pdf']); $xw->writeAttribute('prive', $data['prive_pdf']); $xw->endElement(); } $xw->endElement(); // product (last) $xw->endElement(); // Products $xw->endDocument(); echo $xw->outputMemory();
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 34, Position 2 = 85
Branch analysis from position: 34
2 jumps found. (Code = 78) Position 1 = 35, Position 2 = 85
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 61
Branch analysis from position: 47
2 jumps found. (Code = 43) Position 1 = 48, Position 2 = 50
Branch analysis from position: 48
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 50
Branch analysis from position: 61
Branch analysis from position: 85
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 85
filename:       /in/tiN94
function name:  (null)
number of ops:  96
compiled vars:  !0 = $csv, !1 = $lines, !2 = $headers, !3 = $xw, !4 = $prevprod, !5 = $line, !6 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   ASSIGN                                                   !0, 'produit+nom_pdf+type_pdf+prive_pdf%0A1+ENTREE_AIR_AUTO_RE_FR_FR_28143161+Rapport_d_essai+0%0A1+M_FT_FR_FR_201803+Fiche_technique+0%0A100+AMD%2BC_FT_FR_FR_201901+Fiche_technique+0%0A1000+APDR_FT_FR_FR_201907+Fiche_technique+0%0A1000+ATTESTATION_A1_CONVENTIONNELS+Proc%C3%A8s-verbal+1'
   13     1        INIT_FCALL                                               'explode'
          2        SEND_VAL                                                 '%0A'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $8      
          5        ASSIGN                                                   !1, $8
   15     6        INIT_FCALL                                               'str_getcsv'
          7        INIT_FCALL                                               'array_shift'
          8        SEND_REF                                                 !1
          9        DO_ICALL                                         $10     
         10        SEND_VAR                                                 $10
         11        SEND_VAL                                                 '+'
         12        DO_ICALL                                         $11     
         13        ASSIGN                                                   !2, $11
   17    14        NEW                                              $13     'XMLWriter'
         15        DO_FCALL                                      0          
         16        ASSIGN                                                   !3, $13
   18    17        INIT_METHOD_CALL                                         !3, 'openMemory'
         18        DO_FCALL                                      0          
   19    19        INIT_METHOD_CALL                                         !3, 'startDocument'
         20        SEND_VAL_EX                                              '1.0'
         21        SEND_VAL_EX                                              'utf-8'
         22        DO_FCALL                                      0          
   20    23        INIT_METHOD_CALL                                         !3, 'setIndent'
         24        SEND_VAL_EX                                              <true>
         25        DO_FCALL                                      0          
   21    26        INIT_METHOD_CALL                                         !3, 'setIndentString'
         27        SEND_VAL_EX                                              '++++'
         28        DO_FCALL                                      0          
   22    29        INIT_METHOD_CALL                                         !3, 'startElement'
         30        SEND_VAL_EX                                              'Products'
         31        DO_FCALL                                      0          
   24    32        ASSIGN                                                   !4, <false>
   26    33      > FE_RESET_R                                       $22     !1, ->85
         34    > > FE_FETCH_R                                               $22, !5, ->85
   27    35    >   INIT_FCALL                                               'array_combine'
         36        SEND_VAR                                                 !2
         37        INIT_FCALL                                               'str_getcsv'
         38        SEND_VAR                                                 !5
         39        SEND_VAL                                                 '+'
         40        DO_ICALL                                         $23     
         41        SEND_VAR                                                 $23
         42        DO_ICALL                                         $24     
         43        ASSIGN                                                   !6, $24
   29    44        FETCH_DIM_R                                      ~26     !6, 'produit'
         45        IS_NOT_IDENTICAL                                         !4, ~26
         46      > JMPZ                                                     ~27, ->61
   30    47    > > JMPZ                                                     !4, ->50
         48    >   INIT_METHOD_CALL                                         !3, 'endElement'
         49        DO_FCALL                                      0          
   31    50    >   FETCH_DIM_R                                      ~29     !6, 'produit'
         51        ASSIGN                                                   !4, ~29
   33    52        INIT_METHOD_CALL                                         !3, 'startElement'
         53        SEND_VAL_EX                                              'produit'
         54        DO_FCALL                                      0          
   34    55        INIT_METHOD_CALL                                         !3, 'writeAttribute'
         56        SEND_VAL_EX                                              'code'
         57        CHECK_FUNC_ARG                                           
         58        FETCH_DIM_FUNC_ARG                               $32     !6, 'produit'
         59        SEND_FUNC_ARG                                            $32
         60        DO_FCALL                                      0          
   37    61    >   INIT_METHOD_CALL                                         !3, 'startElement'
         62        SEND_VAL_EX                                              'Fichier'
         63        DO_FCALL                                      0          
   38    64        INIT_METHOD_CALL                                         !3, 'writeAttribute'
         65        SEND_VAL_EX                                              'nom_fichier'
         66        CHECK_FUNC_ARG                                           
         67        FETCH_DIM_FUNC_ARG                               $35     !6, 'nom_pdf'
         68        SEND_FUNC_ARG                                            $35
         69        DO_FCALL                                      0          
   39    70        INIT_METHOD_CALL                                         !3, 'writeAttribute'
         71        SEND_VAL_EX                                              'type_fichier'
         72        CHECK_FUNC_ARG                                           
         73        FETCH_DIM_FUNC_ARG                               $37     !6, 'type_pdf'
         74        SEND_FUNC_ARG                                            $37
         75        DO_FCALL                                      0          
   40    76        INIT_METHOD_CALL                                         !3, 'writeAttribute'
         77        SEND_VAL_EX                                              'prive'
         78        CHECK_FUNC_ARG                                           
         79        FETCH_DIM_FUNC_ARG                               $39     !6, 'prive_pdf'
         80        SEND_FUNC_ARG                                            $39
         81        DO_FCALL                                      0          
   41    82        INIT_METHOD_CALL                                         !3, 'endElement'
         83        DO_FCALL                                      0          
   26    84      > JMP                                                      ->34
         85    >   FE_FREE                                                  $22
   44    86        INIT_METHOD_CALL                                         !3, 'endElement'
         87        DO_FCALL                                      0          
   45    88        INIT_METHOD_CALL                                         !3, 'endElement'
         89        DO_FCALL                                      0          
   46    90        INIT_METHOD_CALL                                         !3, 'endDocument'
         91        DO_FCALL                                      0          
   48    92        INIT_METHOD_CALL                                         !3, 'outputMemory'
         93        DO_FCALL                                      0  $45     
         94        ECHO                                                     $45
         95      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.49 ms | 1012 KiB | 17 Q