3v4l.org

run code in 500+ PHP versions simultaneously
<?php $json = '{ "data": [{ "approved": null, "approved_user_id": null, "boxes": [], "created": "2020-05-19T21", "created_at": "2020-05-19T21", "edited": null, "edited_in_affiliate": null, "edited_in_hdr": null, "edited_in_web_app": null, "erp_project_id": null, "error_description": "", "header_fields": [{ "boxes": [], "code": "creditor_number", "data_type": "", "error": "", "feature_id": "nvnnn", "value": "hhhhh" }, { "boxes": [], "code": "payment_account_number", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "order_number", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "total_amount_incl_vat", "data_type": "", "error": "", "feature_id": "mmm", "value": "hhh" }, { "approved": null, "approved_user_id": null, "boxes": [], "created": "2020-05-19", "created_at": "2020-05-19", "edited": null, "edited_in_affiliate": null, "edited_in_hdr": null, "edited_in_web_app": null, "erp_project_id": null, "error_description": "", "header_fields": [{ "boxes": [], "code": "reference", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "payment_swift_bic", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "recipient_vat_reg_no", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "joint_payment_id", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "catalog_debitor_id", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "case_number", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "payment_account_number", "data_type": "", "error": "", "value": "" }, { "boxes": [], "code": "payment_iban", "data_type": "", "error": "", "value": "" } ], "id": "00000", "image": "https://skkkkkllllllllll", "line_items": [], "note": "", "organization_id": 11111, "organization_voucher_id": 7777, "page_count": 1, "status": "successful", "type": "voucher", "upload_type": "affiliate", "uploaded_by_user_id": "0000001", "user_payment_method": "", "user_voucher_type": "" } ] }], "meta": { "count": 2 } }'; // IMPORTANT: feature_ids, ids, uploaded_by_user_ids, image MUST ALL BE QUOTE-WRAPPED. // IMPORTANT: commas must separate entries in the json string. // IMPORTANT: your json string was not closed with the appropriate number and type of braces. // use https://jsonlint.com/ to see how your json is invalid function unpackHeaderFields($value, $t = "\t") { foreach ($value as $headersIndex => $headers) { foreach ($headers as $headerKey => $headerValue) { if ($headerKey == 'header_fields') { unpackHeaderFields($headerValue, $t . "\t"); } elseif (in_array($headerKey, ['boxes', 'line_items'])) { echo "$t$headersIndex : $headerKey...\n"; foreach ($headerValue as $subIndex => $subValue) { echo "$t\t$subValue\n"; } } else { echo "$t$headersIndex : $headerKey = $headerValue\n"; } } } } $array = json_decode($json, true); foreach ($array['data'] as $index => $data) { foreach ($data as $key => $value) { if ($key == 'header_fields') { echo "$index : header_fields...\n"; unpackHeaderFields($value); } elseif ($key == 'boxes') { echo "$index : boxes...\n"; foreach ($value as $boxIndex => $boxValue) { echo "\t$boxValue\n"; } } else { echo "$index : $key = $value\n"; } } } echo 'meta count = ' . $array['meta']['count'];
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 8, Position 2 = 47
Branch analysis from position: 8
2 jumps found. (Code = 78) Position 1 = 9, Position 2 = 47
Branch analysis from position: 9
2 jumps found. (Code = 77) Position 1 = 11, Position 2 = 45
Branch analysis from position: 11
2 jumps found. (Code = 78) Position 1 = 12, Position 2 = 45
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 22
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 44
Branch analysis from position: 44
1 jumps found. (Code = 42) Position 1 = 11
Branch analysis from position: 11
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 24, Position 2 = 37
Branch analysis from position: 24
2 jumps found. (Code = 77) Position 1 = 28, Position 2 = 35
Branch analysis from position: 28
2 jumps found. (Code = 78) Position 1 = 29, Position 2 = 35
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 28
Branch analysis from position: 28
Branch analysis from position: 35
1 jumps found. (Code = 42) Position 1 = 44
Branch analysis from position: 44
Branch analysis from position: 35
Branch analysis from position: 37
1 jumps found. (Code = 42) Position 1 = 11
Branch analysis from position: 11
Branch analysis from position: 45
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 45
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 47
filename:       /in/g7CMX
function name:  (null)
number of ops:  53
compiled vars:  !0 = $json, !1 = $array, !2 = $data, !3 = $index, !4 = $value, !5 = $key, !6 = $boxValue, !7 = $boxIndex
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, '%7B%0A%09%22data%22%3A+%5B%7B%0A%09%09%22approved%22%3A+null%2C%0A%09%09%22approved_user_id%22%3A+null%2C%0A%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%22created%22%3A+%222020-05-19T21%22%2C%0A%09%09%22created_at%22%3A+%222020-05-19T21%22%2C%0A%09%09%22edited%22%3A+null%2C%0A%09%09%22edited_in_affiliate%22%3A+null%2C%0A%09%09%22edited_in_hdr%22%3A+null%2C%0A%09%09%22edited_in_web_app%22%3A+null%2C%0A%09%09%22erp_project_id%22%3A+null%2C%0A%09%09%22error_description%22%3A+%22%22%2C%0A%09%09%22header_fields%22%3A+%5B%7B%0A%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%22code%22%3A+%22creditor_number%22%2C%0A%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%22feature_id%22%3A+%22nvnnn%22%2C%0A%09%09%09%09%22value%22%3A+%22hhhhh%22%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%22code%22%3A+%22payment_account_number%22%2C%0A%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%22code%22%3A+%22order_number%22%2C%0A%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%22code%22%3A+%22total_amount_incl_vat%22%2C%0A%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%22feature_id%22%3A+%22mmm%22%2C%0A%09%09%09%09%22value%22%3A+%22hhh%22%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%09%22approved%22%3A+null%2C%0A%09%09%09%09%22approved_user_id%22%3A+null%2C%0A%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%22created%22%3A+%222020-05-19%22%2C%0A%09%09%09%09%22created_at%22%3A+%222020-05-19%22%2C%0A%09%09%09%09%22edited%22%3A+null%2C%0A%09%09%09%09%22edited_in_affiliate%22%3A+null%2C%0A%09%09%09%09%22edited_in_hdr%22%3A+null%2C%0A%09%09%09%09%22edited_in_web_app%22%3A+null%2C%0A%09%09%09%09%22erp_project_id%22%3A+null%2C%0A%09%09%09%09%22error_description%22%3A+%22%22%2C%0A%09%09%09%09%22header_fields%22%3A+%5B%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22reference%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22payment_swift_bic%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22recipient_vat_reg_no%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22joint_payment_id%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22catalog_debitor_id%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22case_number%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%0A%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22payment_account_number%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%7B%0A%09%09%09%09%09%09%22boxes%22%3A+%5B%5D%2C%0A%09%09%09%09%09%09%22code%22%3A+%22payment_iban%22%2C%0A%09%09%09%09%09%09%22data_type%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22error%22%3A+%22%22%2C%0A%09%09%09%09%09%09%22value%22%3A+%22%22%0A%09%09%09%09%09%7D%0A%0A%0A%09%09%09%09%5D%2C%0A%09%09%09%09%22id%22%3A+%2200000%22%2C%0A%09%09%09%09%22image%22%3A+%22https%3A%2F%2Fskkkkkllllllllll%22%2C%0A%09%09%09%09%22line_items%22%3A+%5B%5D%2C%0A%09%09%09%09%22note%22%3A+%22%22%2C%0A%09%09%09%09%22organization_id%22%3A+11111%2C%0A%09%09%09%09%22organization_voucher_id%22%3A+7777%2C%0A%09%09%09%09%22page_count%22%3A+1%2C%0A%09%09%09%09%22status%22%3A+%22successful%22%2C%0A%09%09%09%09%22type%22%3A+%22voucher%22%2C%0A%09%09%09%09%22upload_type%22%3A+%22affiliate%22%2C%0A%09%09%09%09%22uploaded_by_user_id%22%3A+%220000001%22%2C%0A%09%09%09%09%22user_payment_method%22%3A+%22%22%2C%0A%09%09%09%09%22user_voucher_type%22%3A+%22%22%0A%09%09%09%7D%0A%09%09%5D%0A%09%7D%5D%2C%0A%09%22meta%22%3A+%7B%0A%09%09%22count%22%3A+2%0A%09%7D%0A%7D'
  166     1        INIT_FCALL                                                   'json_decode'
          2        SEND_VAR                                                     !0
          3        SEND_VAL                                                     <true>
          4        DO_ICALL                                             $9      
          5        ASSIGN                                                       !1, $9
  167     6        FETCH_DIM_R                                          ~11     !1, 'data'
          7      > FE_RESET_R                                           $12     ~11, ->47
          8    > > FE_FETCH_R                                           ~13     $12, !2, ->47
          9    >   ASSIGN                                                       !3, ~13
  168    10      > FE_RESET_R                                           $15     !2, ->45
         11    > > FE_FETCH_R                                           ~16     $15, !4, ->45
         12    >   ASSIGN                                                       !5, ~16
  169    13        IS_EQUAL                                                     !5, 'header_fields'
         14      > JMPZ                                                         ~18, ->22
  170    15    >   NOP                                                          
         16        FAST_CONCAT                                          ~19     !3, '+%3A+header_fields...%0A'
         17        ECHO                                                         ~19
  171    18        INIT_FCALL                                                   'unpackheaderfields'
         19        SEND_VAR                                                     !4
         20        DO_FCALL                                          0          
  169    21      > JMP                                                          ->44
  172    22    >   IS_EQUAL                                                     !5, 'boxes'
         23      > JMPZ                                                         ~21, ->37
  173    24    >   NOP                                                          
         25        FAST_CONCAT                                          ~22     !3, '+%3A+boxes...%0A'
         26        ECHO                                                         ~22
  174    27      > FE_RESET_R                                           $23     !4, ->35
         28    > > FE_FETCH_R                                           ~24     $23, !6, ->35
         29    >   ASSIGN                                                       !7, ~24
  175    30        ROPE_INIT                                         3  ~27     '%09'
         31        ROPE_ADD                                          1  ~27     ~27, !6
         32        ROPE_END                                          2  ~26     ~27, '%0A'
         33        ECHO                                                         ~26
  174    34      > JMP                                                          ->28
         35    >   FE_FREE                                                      $23
  172    36      > JMP                                                          ->44
  178    37    >   ROPE_INIT                                         6  ~30     !3
         38        ROPE_ADD                                          1  ~30     ~30, '+%3A+'
         39        ROPE_ADD                                          2  ~30     ~30, !5
         40        ROPE_ADD                                          3  ~30     ~30, '+%3D+'
         41        ROPE_ADD                                          4  ~30     ~30, !4
         42        ROPE_END                                          5  ~29     ~30, '%0A'
         43        ECHO                                                         ~29
  168    44    > > JMP                                                          ->11
         45    >   FE_FREE                                                      $15
  167    46      > JMP                                                          ->8
         47    >   FE_FREE                                                      $12
  183    48        FETCH_DIM_R                                          ~33     !1, 'meta'
         49        FETCH_DIM_R                                          ~34     ~33, 'count'
         50        CONCAT                                               ~35     'meta+count+%3D+', ~34
         51        ECHO                                                         ~35
         52      > RETURN                                                       1

Function unpackheaderfields:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 46
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 46
Branch analysis from position: 4
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 44
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 44
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 16
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 43
Branch analysis from position: 43
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 35
Branch analysis from position: 18
2 jumps found. (Code = 77) Position 1 = 25, Position 2 = 33
Branch analysis from position: 25
2 jumps found. (Code = 78) Position 1 = 26, Position 2 = 33
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 43
Branch analysis from position: 43
Branch analysis from position: 33
Branch analysis from position: 35
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 44
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 44
Branch analysis from position: 46
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 46
filename:       /in/g7CMX
function name:  unpackHeaderFields
number of ops:  48
compiled vars:  !0 = $value, !1 = $t, !2 = $headers, !3 = $headersIndex, !4 = $headerValue, !5 = $headerKey, !6 = $subValue, !7 = $subIndex
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
  149     0  E >   RECV                                                 !0      
          1        RECV_INIT                                            !1      '%09'
  150     2      > FE_RESET_R                                           $8      !0, ->46
          3    > > FE_FETCH_R                                           ~9      $8, !2, ->46
          4    >   ASSIGN                                                       !3, ~9
  151     5      > FE_RESET_R                                           $11     !2, ->44
          6    > > FE_FETCH_R                                           ~12     $11, !4, ->44
          7    >   ASSIGN                                                       !5, ~12
  152     8        IS_EQUAL                                                     !5, 'header_fields'
          9      > JMPZ                                                         ~14, ->16
  153    10    >   INIT_FCALL_BY_NAME                                           'unpackHeaderFields'
         11        SEND_VAR_EX                                                  !4
         12        CONCAT                                               ~15     !1, '%09'
         13        SEND_VAL_EX                                                  ~15
         14        DO_FCALL                                          0          
  152    15      > JMP                                                          ->43
  154    16    >   IN_ARRAY                                                     !5, <array>
         17      > JMPZ                                                         ~17, ->35
  155    18    >   ROPE_INIT                                         5  ~19     !1
         19        ROPE_ADD                                          1  ~19     ~19, !3
         20        ROPE_ADD                                          2  ~19     ~19, '+%3A+'
         21        ROPE_ADD                                          3  ~19     ~19, !5
         22        ROPE_END                                          4  ~18     ~19, '...%0A'
         23        ECHO                                                         ~18
  156    24      > FE_RESET_R                                           $22     !4, ->33
         25    > > FE_FETCH_R                                           ~23     $22, !6, ->33
         26    >   ASSIGN                                                       !7, ~23
  157    27        ROPE_INIT                                         4  ~26     !1
         28        ROPE_ADD                                          1  ~26     ~26, '%09'
         29        ROPE_ADD                                          2  ~26     ~26, !6
         30        ROPE_END                                          3  ~25     ~26, '%0A'
         31        ECHO                                                         ~25
  156    32      > JMP                                                          ->25
         33    >   FE_FREE                                                      $22
  154    34      > JMP                                                          ->43
  160    35    >   ROPE_INIT                                         7  ~29     !1
         36        ROPE_ADD                                          1  ~29     ~29, !3
         37        ROPE_ADD                                          2  ~29     ~29, '+%3A+'
         38        ROPE_ADD                                          3  ~29     ~29, !5
         39        ROPE_ADD                                          4  ~29     ~29, '+%3D+'
         40        ROPE_ADD                                          5  ~29     ~29, !4
         41        ROPE_END                                          6  ~28     ~29, '%0A'
         42        ECHO                                                         ~28
  151    43    > > JMP                                                          ->6
         44    >   FE_FREE                                                      $11
  150    45      > JMP                                                          ->3
         46    >   FE_FREE                                                      $8
  164    47      > RETURN                                                       null

End of function unpackheaderfields

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
485.07 ms | 2764 KiB | 15 Q