3v4l.org

run code in 300+ PHP versions simultaneously
<?php $json_str='{ "code": 200, "message": "操作成功", "data": [ { "id": 1, "goods_id": 1, "property_name_id": 1, "property_value_id": 1, "property_name": { "title": "份量", "is_sale": true }, "property_value": { "id": 1, "value": "小份", "image": "" } }, { "id": 2, "goods_id": 1, "property_name_id": 1, "property_value_id": 2, "property_name": { "title": "份量", "is_sale": true }, "property_value": { "id": 2, "value": "中份", "image": "" } }, { "id": 3, "goods_id": 1, "property_name_id": 2, "property_value_id": 4, "property_name": { "title": "温度", "is_sale": true }, "property_value": { "id": 4, "value": "常温", "image": "" } }, { "id": 4, "goods_id": 1, "property_name_id": 2, "property_value_id": 5, "property_name": { "title": "温度", "is_sale": true }, "property_value": { "id": 5, "value": "加冰", "image": "" } } ] }'; $obj = json_decode($json_str); $data = []; foreach($obj->data as $v){ $nid=$v->property_name_id; if(!array_key_exists($nid,$data)){ $o = new stdclass; $o->property_id = $v->property_name_id; $o->property_name = $v->property_name->title; $o->is_sale= $v->property_name->is_sale ; $data[$nid]=$o; } $data[$nid]->items[]=$v->property_value; } $obj->data = array_values($data); print_r($obj); //echo json_encode($obj);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 8, Position 2 = 36
Branch analysis from position: 8
2 jumps found. (Code = 78) Position 1 = 9, Position 2 = 36
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 30
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 30
Branch analysis from position: 36
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 36
filename:       /in/JSStn
function name:  (null)
number of ops:  46
compiled vars:  !0 = $json_str, !1 = $obj, !2 = $data, !3 = $v, !4 = $nid, !5 = $o
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%7B%0A++++%22code%22%3A+200%2C%0A++++%22message%22%3A+%22%E6%93%8D%E4%BD%9C%E6%88%90%E5%8A%9F%22%2C%0A++++%22data%22%3A+%5B%0A++++++++%7B%0A++++++++++++%22id%22%3A+1%2C%0A++++++++++++%22goods_id%22%3A+1%2C%0A++++++++++++%22property_name_id%22%3A+1%2C%0A++++++++++++%22property_value_id%22%3A+1%2C%0A++++++++++++%22property_name%22%3A+%7B%0A++++++++++++++++%22title%22%3A+%22%E4%BB%BD%E9%87%8F%22%2C%0A++++++++++++++++%22is_sale%22%3A+true%0A++++++++++++%7D%2C%0A++++++++++++%22property_value%22%3A+%7B%0A++++++++++++++++%22id%22%3A+1%2C%0A++++++++++++++++%22value%22%3A+%22%E5%B0%8F%E4%BB%BD%22%2C%0A++++++++++++++++%22image%22%3A+%22%22%0A++++++++++++%7D%0A++++++++%7D%2C%0A++++++++%7B%0A++++++++++++%22id%22%3A+2%2C%0A++++++++++++%22goods_id%22%3A+1%2C%0A++++++++++++%22property_name_id%22%3A+1%2C%0A++++++++++++%22property_value_id%22%3A+2%2C%0A++++++++++++%22property_name%22%3A+%7B%0A++++++++++++++++%22title%22%3A+%22%E4%BB%BD%E9%87%8F%22%2C%0A++++++++++++++++%22is_sale%22%3A+true%0A++++++++++++%7D%2C%0A++++++++++++%22property_value%22%3A+%7B%0A++++++++++++++++%22id%22%3A+2%2C%0A++++++++++++++++%22value%22%3A+%22%E4%B8%AD%E4%BB%BD%22%2C%0A++++++++++++++++%22image%22%3A+%22%22%0A++++++++++++%7D%0A++++++++%7D%2C%0A++++++++%7B%0A++++++++++++%22id%22%3A+3%2C%0A++++++++++++%22goods_id%22%3A+1%2C%0A++++++++++++%22property_name_id%22%3A+2%2C%0A++++++++++++%22property_value_id%22%3A+4%2C%0A++++++++++++%22property_name%22%3A+%7B%0A++++++++++++++++%22title%22%3A+%22%E6%B8%A9%E5%BA%A6%22%2C%0A++++++++++++++++%22is_sale%22%3A+true%0A++++++++++++%7D%2C%0A++++++++++++%22property_value%22%3A+%7B%0A++++++++++++++++%22id%22%3A+4%2C%0A++++++++++++++++%22value%22%3A+%22%E5%B8%B8%E6%B8%A9%22%2C%0A++++++++++++++++%22image%22%3A+%22%22%0A++++++++++++%7D%0A++++++++%7D%2C%0A++++++++%7B%0A++++++++++++%22id%22%3A+4%2C%0A++++++++++++%22goods_id%22%3A+1%2C%0A++++++++++++%22property_name_id%22%3A+2%2C%0A++++++++++++%22property_value_id%22%3A+5%2C%0A++++++++++++%22property_name%22%3A+%7B%0A++++++++++++++++%22title%22%3A+%22%E6%B8%A9%E5%BA%A6%22%2C%0A++++++++++++++++%22is_sale%22%3A+true%0A++++++++++++%7D%2C%0A++++++++++++%22property_value%22%3A+%7B%0A++++++++++++++++%22id%22%3A+5%2C%0A++++++++++++++++%22value%22%3A+%22%E5%8A%A0%E5%86%B0%22%2C%0A++++++++++++++++%22image%22%3A+%22%22%0A++++++++++++%7D%0A++++++++%7D%0A++++%5D%0A%7D'
   69     1        INIT_FCALL                                               'json_decode'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $7      
          4        ASSIGN                                                   !1, $7
   71     5        ASSIGN                                                   !2, <array>
   72     6        FETCH_OBJ_R                                      ~10     !1, 'data'
          7      > FE_RESET_R                                       $11     ~10, ->36
          8    > > FE_FETCH_R                                               $11, !3, ->36
   74     9    >   FETCH_OBJ_R                                      ~12     !3, 'property_name_id'
         10        ASSIGN                                                   !4, ~12
   75    11        ARRAY_KEY_EXISTS                                 ~14     !4, !2
         12        BOOL_NOT                                         ~15     ~14
         13      > JMPZ                                                     ~15, ->30
   76    14    >   NEW                                              $16     'stdclass'
         15        DO_FCALL                                      0          
         16        ASSIGN                                                   !5, $16
   77    17        FETCH_OBJ_R                                      ~20     !3, 'property_name_id'
         18        ASSIGN_OBJ                                               !5, 'property_id'
         19        OP_DATA                                                  ~20
   78    20        FETCH_OBJ_R                                      ~22     !3, 'property_name'
         21        FETCH_OBJ_R                                      ~23     ~22, 'title'
         22        ASSIGN_OBJ                                               !5, 'property_name'
         23        OP_DATA                                                  ~23
   79    24        FETCH_OBJ_R                                      ~25     !3, 'property_name'
         25        FETCH_OBJ_R                                      ~26     ~25, 'is_sale'
         26        ASSIGN_OBJ                                               !5, 'is_sale'
         27        OP_DATA                                                  ~26
   80    28        ASSIGN_DIM                                               !2, !4
         29        OP_DATA                                                  !5
   82    30    >   FETCH_OBJ_R                                      ~31     !3, 'property_value'
         31        FETCH_DIM_W                                      $28     !2, !4
         32        FETCH_OBJ_W                                      $29     $28, 'items'
         33        ASSIGN_DIM                                               $29
         34        OP_DATA                                                  ~31
   72    35      > JMP                                                      ->8
         36    >   FE_FREE                                                  $11
   85    37        INIT_FCALL                                               'array_values'
         38        SEND_VAR                                                 !2
         39        DO_ICALL                                         $33     
         40        ASSIGN_OBJ                                               !1, 'data'
         41        OP_DATA                                                  $33
   86    42        INIT_FCALL                                               'print_r'
         43        SEND_VAR                                                 !1
         44        DO_ICALL                                                 
   87    45      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
147.91 ms | 1405 KiB | 19 Q