3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr = [ [ 'cards1' => [ 'A', 'b', 'c' ], 'cards2' => [ 'A', 'e', 'd' ], 'cards3' => [ 'A', 'o', 'l' ] ], [ 'cards1' => [ 'A', 'b', 'c' ], 'cards2' => [ 'A', 'r', 'c' ], 'cards3' => [ 'A', 'bbb', 'yyy' ] ], [ 'cards1' => [ 'B', 'bbb', 'B' ], 'cards2' => [ 'B', ], 'cards3' => [ 'B', ] ] ]; $set = []; $except = []; foreach($arr as $data){ foreach($data as $key => $cards){ if($key === 'cards1'){ $except[$data[$key][0]] = true; break; } } } foreach($arr as &$data){ foreach($data as $key => &$cards){ foreach($cards as $index => $value){ if(isset($set[$value]) && !isset($except[$value])) unset($cards[$index]); else $set[$value] = true; } } } print_r($arr);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 4, Position 2 = 18
Branch analysis from position: 4
2 jumps found. (Code = 78) Position 1 = 5, Position 2 = 18
Branch analysis from position: 5
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 16
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 16
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 15
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 4
Branch analysis from position: 4
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 16
Branch analysis from position: 16
Branch analysis from position: 18
2 jumps found. (Code = 125) Position 1 = 20, Position 2 = 42
Branch analysis from position: 20
2 jumps found. (Code = 126) Position 1 = 21, Position 2 = 42
Branch analysis from position: 21
2 jumps found. (Code = 125) Position 1 = 22, Position 2 = 40
Branch analysis from position: 22
2 jumps found. (Code = 126) Position 1 = 23, Position 2 = 40
Branch analysis from position: 23
2 jumps found. (Code = 77) Position 1 = 25, Position 2 = 38
Branch analysis from position: 25
2 jumps found. (Code = 78) Position 1 = 26, Position 2 = 38
Branch analysis from position: 26
2 jumps found. (Code = 46) Position 1 = 29, Position 2 = 32
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 35
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 37
Branch analysis from position: 37
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 35
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 32
Branch analysis from position: 38
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
Branch analysis from position: 38
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
Branch analysis from position: 40
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 42
Branch analysis from position: 18
filename:       /in/14LHh
function name:  (null)
number of ops:  47
compiled vars:  !0 = $arr, !1 = $set, !2 = $except, !3 = $data, !4 = $cards, !5 = $key, !6 = $value, !7 = $index
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
   53     1        ASSIGN                                                   !1, <array>
   54     2        ASSIGN                                                   !2, <array>
   57     3      > FE_RESET_R                                       $11     !0, ->18
          4    > > FE_FETCH_R                                               $11, !3, ->18
   58     5    > > FE_RESET_R                                       $12     !3, ->16
          6    > > FE_FETCH_R                                       ~13     $12, !4, ->16
          7    >   ASSIGN                                                   !5, ~13
   59     8        IS_IDENTICAL                                             !5, 'cards1'
          9      > JMPZ                                                     ~15, ->15
   60    10    >   FETCH_DIM_R                                      ~16     !3, !5
         11        FETCH_DIM_R                                      ~17     ~16, 0
         12        ASSIGN_DIM                                               !2, ~17
         13        OP_DATA                                                  <true>
   61    14      > JMP                                                      ->16
   58    15    > > JMP                                                      ->6
         16    >   FE_FREE                                                  $12
   57    17      > JMP                                                      ->4
         18    >   FE_FREE                                                  $11
   66    19      > FE_RESET_RW                                      $19     !0, ->42
         20    > > FE_FETCH_RW                                              $19, !3, ->42
   67    21    > > FE_RESET_RW                                      $20     !3, ->40
         22    > > FE_FETCH_RW                                      ~21     $20, !4, ->40
         23    >   ASSIGN                                                   !5, ~21
   68    24      > FE_RESET_R                                       $23     !4, ->38
         25    > > FE_FETCH_R                                       ~24     $23, !6, ->38
         26    >   ASSIGN                                                   !7, ~24
   69    27        ISSET_ISEMPTY_DIM_OBJ                         0  ~26     !1, !6
         28      > JMPZ_EX                                          ~26     ~26, ->32
         29    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~27     !2, !6
         30        BOOL_NOT                                         ~28     ~27
         31        BOOL                                             ~26     ~28
         32    > > JMPZ                                                     ~26, ->35
         33    >   UNSET_DIM                                                !4, !7
         34      > JMP                                                      ->37
   70    35    >   ASSIGN_DIM                                               !1, !6
         36        OP_DATA                                                  <true>
   68    37    > > JMP                                                      ->25
         38    >   FE_FREE                                                  $23
   67    39      > JMP                                                      ->22
         40    >   FE_FREE                                                  $20
   66    41      > JMP                                                      ->20
         42    >   FE_FREE                                                  $19
   76    43        INIT_FCALL                                               'print_r'
         44        SEND_VAR                                                 !0
         45        DO_ICALL                                                 
         46      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
143.7 ms | 1007 KiB | 14 Q