3v4l.org

run code in 300+ PHP versions simultaneously
<?php function test($array) { try { return is_associative_array($array); } catch (Exception $e) { echo $e->getMessage(); return 'error'; } } function is_associative_array($array) { // your fav method here } //// non-array - adjust according to your preferred error handling technique //assert(test(null)); //assert(test('')); //assert(test(0)); //assert(test(false)); //assert(test(new stdClass)); // empty array assert(test([]) === true); // numeric keys assert(test([null, 'a', 'b']) === false); // proper indexed array; also, to catch wrong isset usage assert(test([1 => 'a', 2 => 'b', 3 => 'c']) === true); // sequential but not 0-based assert(test([-1 => '', 0 => '', 1 => 'a']) === true); // sequential but not 0-based assert(test([0 => '', 2 => 'b', 3 => 'c']) === true); // 1 index missing assert(test([0 => '', 2 => 'b', 1 => 'a']) === true); // numeric but unordered assert(test([0 => '']) === false); // single item assert(test([1 => 'a']) === true); // single item assert(test([NAN]) === false); assert(test([NAN => '']) === true); assert(test([INF]) === false); assert(test([INF => '']) === true); // string keys assert(test(['' => '', 'a' => 'a', 'b' => 'b']) === true); // proper associative array assert(test(['' => '']) === true); // single item // mixed keys assert(test(['' => '', 1 => 'a']) === true); // first key string but rest not; also, associative even though '' == 0 assert(test([0 => '', 'a' => 'a']) === true); // first key numeric but rest not // numeric string keys assert(test([' 0' => '']) === true); // associative even though ' 0' == 0 assert(test(['00' => '']) === true); // associative even though '00' == 0 assert(test(['0*' => '']) === true); // associative even though '0*' == 0 assert(test(['0.0' => '']) === true); // associative even though '0.0' == 0.0 assert(test(['0x0' => '']) === true); // associative even though '0x0' == 0 assert(test(['0e0' => '']) === true); // associative even though '0e0' == 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/rRiAb
function name:  (null)
number of ops:  199
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   29     0  E >   ASSERT_CHECK                                             
          1        INIT_FCALL                                               'assert'
          2        INIT_FCALL                                               'test'
          3        SEND_VAL                                                 <array>
          4        DO_FCALL                                      0  $0      
          5        TYPE_CHECK                                    8  ~1      $0
          6        SEND_VAL                                                 ~1
          7        SEND_VAL                                                 'assert%28test%28%5B%5D%29+%3D%3D%3D+true%29'
          8        DO_ICALL                                                 
   32     9        ASSERT_CHECK                                             
         10        INIT_FCALL                                               'assert'
         11        INIT_FCALL                                               'test'
         12        SEND_VAL                                                 <array>
         13        DO_FCALL                                      0  $3      
         14        TYPE_CHECK                                    4  ~4      $3
         15        SEND_VAL                                                 ~4
         16        SEND_VAL                                                 'assert%28test%28%5Bnull%2C+%27a%27%2C+%27b%27%5D%29+%3D%3D%3D+false%29'
         17        DO_ICALL                                                 
   33    18        ASSERT_CHECK                                             
         19        INIT_FCALL                                               'assert'
         20        INIT_FCALL                                               'test'
         21        SEND_VAL                                                 <array>
         22        DO_FCALL                                      0  $6      
         23        TYPE_CHECK                                    8  ~7      $6
         24        SEND_VAL                                                 ~7
         25        SEND_VAL                                                 'assert%28test%28%5B1+%3D%3E+%27a%27%2C+2+%3D%3E+%27b%27%2C+3+%3D%3E+%27c%27%5D%29+%3D%3D%3D+true%29'
         26        DO_ICALL                                                 
   34    27        ASSERT_CHECK                                             
         28        INIT_FCALL                                               'assert'
         29        INIT_FCALL                                               'test'
         30        SEND_VAL                                                 <array>
         31        DO_FCALL                                      0  $9      
         32        TYPE_CHECK                                    8  ~10     $9
         33        SEND_VAL                                                 ~10
         34        SEND_VAL                                                 'assert%28test%28%5B-1+%3D%3E+%27%27%2C+0+%3D%3E+%27%27%2C+1+%3D%3E+%27a%27%5D%29+%3D%3D%3D+true%29'
         35        DO_ICALL                                                 
   35    36        ASSERT_CHECK                                             
         37        INIT_FCALL                                               'assert'
         38        INIT_FCALL                                               'test'
         39        SEND_VAL                                                 <array>
         40        DO_FCALL                                      0  $12     
         41        TYPE_CHECK                                    8  ~13     $12
         42        SEND_VAL                                                 ~13
         43        SEND_VAL                                                 'assert%28test%28%5B0+%3D%3E+%27%27%2C+2+%3D%3E+%27b%27%2C+3+%3D%3E+%27c%27%5D%29+%3D%3D%3D+true%29'
         44        DO_ICALL                                                 
   36    45        ASSERT_CHECK                                             
         46        INIT_FCALL                                               'assert'
         47        INIT_FCALL                                               'test'
         48        SEND_VAL                                                 <array>
         49        DO_FCALL                                      0  $15     
         50        TYPE_CHECK                                    8  ~16     $15
         51        SEND_VAL                                                 ~16
         52        SEND_VAL                                                 'assert%28test%28%5B0+%3D%3E+%27%27%2C+2+%3D%3E+%27b%27%2C+1+%3D%3E+%27a%27%5D%29+%3D%3D%3D+true%29'
         53        DO_ICALL                                                 
   37    54        ASSERT_CHECK                                             
         55        INIT_FCALL                                               'assert'
         56        INIT_FCALL                                               'test'
         57        SEND_VAL                                                 <array>
         58        DO_FCALL                                      0  $18     
         59        TYPE_CHECK                                    4  ~19     $18
         60        SEND_VAL                                                 ~19
         61        SEND_VAL                                                 'assert%28test%28%5B0+%3D%3E+%27%27%5D%29+%3D%3D%3D+false%29'
         62        DO_ICALL                                                 
   38    63        ASSERT_CHECK                                             
         64        INIT_FCALL                                               'assert'
         65        INIT_FCALL                                               'test'
         66        SEND_VAL                                                 <array>
         67        DO_FCALL                                      0  $21     
         68        TYPE_CHECK                                    8  ~22     $21
         69        SEND_VAL                                                 ~22
         70        SEND_VAL                                                 'assert%28test%28%5B1+%3D%3E+%27a%27%5D%29+%3D%3D%3D+true%29'
         71        DO_ICALL                                                 
   39    72        ASSERT_CHECK                                             
         73        INIT_FCALL                                               'assert'
         74        INIT_FCALL                                               'test'
         75        SEND_VAL                                                 <array>
         76        DO_FCALL                                      0  $24     
         77        TYPE_CHECK                                    4  ~25     $24
         78        SEND_VAL                                                 ~25
         79        SEND_VAL                                                 'assert%28test%28%5BNAN%5D%29+%3D%3D%3D+false%29'
         80        DO_ICALL                                                 
   40    81        ASSERT_CHECK                                             
         82        INIT_FCALL                                               'assert'
         83        INIT_FCALL                                               'test'
         84        SEND_VAL                                                 <array>
         85        DO_FCALL                                      0  $27     
         86        TYPE_CHECK                                    8  ~28     $27
         87        SEND_VAL                                                 ~28
         88        SEND_VAL                                                 'assert%28test%28%5BNAN+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
         89        DO_ICALL                                                 
   41    90        ASSERT_CHECK                                             
         91        INIT_FCALL                                               'assert'
         92        INIT_FCALL                                               'test'
         93        SEND_VAL                                                 <array>
         94        DO_FCALL                                      0  $30     
         95        TYPE_CHECK                                    4  ~31     $30
         96        SEND_VAL                                                 ~31
         97        SEND_VAL                                                 'assert%28test%28%5BINF%5D%29+%3D%3D%3D+false%29'
         98        DO_ICALL                                                 
   42    99        ASSERT_CHECK                                             
        100        INIT_FCALL                                               'assert'
        101        INIT_FCALL                                               'test'
        102        SEND_VAL                                                 <array>
        103        DO_FCALL                                      0  $33     
        104        TYPE_CHECK                                    8  ~34     $33
        105        SEND_VAL                                                 ~34
        106        SEND_VAL                                                 'assert%28test%28%5BINF+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        107        DO_ICALL                                                 
   45   108        ASSERT_CHECK                                             
        109        INIT_FCALL                                               'assert'
        110        INIT_FCALL                                               'test'
        111        SEND_VAL                                                 <array>
        112        DO_FCALL                                      0  $36     
        113        TYPE_CHECK                                    8  ~37     $36
        114        SEND_VAL                                                 ~37
        115        SEND_VAL                                                 'assert%28test%28%5B%27%27+%3D%3E+%27%27%2C+%27a%27+%3D%3E+%27a%27%2C+%27b%27+%3D%3E+%27b%27%5D%29+%3D%3D%3D+true%29'
        116        DO_ICALL                                                 
   46   117        ASSERT_CHECK                                             
        118        INIT_FCALL                                               'assert'
        119        INIT_FCALL                                               'test'
        120        SEND_VAL                                                 <array>
        121        DO_FCALL                                      0  $39     
        122        TYPE_CHECK                                    8  ~40     $39
        123        SEND_VAL                                                 ~40
        124        SEND_VAL                                                 'assert%28test%28%5B%27%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        125        DO_ICALL                                                 
   49   126        ASSERT_CHECK                                             
        127        INIT_FCALL                                               'assert'
        128        INIT_FCALL                                               'test'
        129        SEND_VAL                                                 <array>
        130        DO_FCALL                                      0  $42     
        131        TYPE_CHECK                                    8  ~43     $42
        132        SEND_VAL                                                 ~43
        133        SEND_VAL                                                 'assert%28test%28%5B%27%27+%3D%3E+%27%27%2C+1+%3D%3E+%27a%27%5D%29+%3D%3D%3D+true%29'
        134        DO_ICALL                                                 
   50   135        ASSERT_CHECK                                             
        136        INIT_FCALL                                               'assert'
        137        INIT_FCALL                                               'test'
        138        SEND_VAL                                                 <array>
        139        DO_FCALL                                      0  $45     
        140        TYPE_CHECK                                    8  ~46     $45
        141        SEND_VAL                                                 ~46
        142        SEND_VAL                                                 'assert%28test%28%5B0+%3D%3E+%27%27%2C+%27a%27+%3D%3E+%27a%27%5D%29+%3D%3D%3D+true%29'
        143        DO_ICALL                                                 
   53   144        ASSERT_CHECK                                             
        145        INIT_FCALL                                               'assert'
        146        INIT_FCALL                                               'test'
        147        SEND_VAL                                                 <array>
        148        DO_FCALL                                      0  $48     
        149        TYPE_CHECK                                    8  ~49     $48
        150        SEND_VAL                                                 ~49
        151        SEND_VAL                                                 'assert%28test%28%5B%27+0%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        152        DO_ICALL                                                 
   54   153        ASSERT_CHECK                                             
        154        INIT_FCALL                                               'assert'
        155        INIT_FCALL                                               'test'
        156        SEND_VAL                                                 <array>
        157        DO_FCALL                                      0  $51     
        158        TYPE_CHECK                                    8  ~52     $51
        159        SEND_VAL                                                 ~52
        160        SEND_VAL                                                 'assert%28test%28%5B%2700%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        161        DO_ICALL                                                 
   55   162        ASSERT_CHECK                                             
        163        INIT_FCALL                                               'assert'
        164        INIT_FCALL                                               'test'
        165        SEND_VAL                                                 <array>
        166        DO_FCALL                                      0  $54     
        167        TYPE_CHECK                                    8  ~55     $54
        168        SEND_VAL                                                 ~55
        169        SEND_VAL                                                 'assert%28test%28%5B%270%2A%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        170        DO_ICALL                                                 
   56   171        ASSERT_CHECK                                             
        172        INIT_FCALL                                               'assert'
        173        INIT_FCALL                                               'test'
        174        SEND_VAL                                                 <array>
        175        DO_FCALL                                      0  $57     
        176        TYPE_CHECK                                    8  ~58     $57
        177        SEND_VAL                                                 ~58
        178        SEND_VAL                                                 'assert%28test%28%5B%270.0%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        179        DO_ICALL                                                 
   57   180        ASSERT_CHECK                                             
        181        INIT_FCALL                                               'assert'
        182        INIT_FCALL                                               'test'
        183        SEND_VAL                                                 <array>
        184        DO_FCALL                                      0  $60     
        185        TYPE_CHECK                                    8  ~61     $60
        186        SEND_VAL                                                 ~61
        187        SEND_VAL                                                 'assert%28test%28%5B%270x0%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        188        DO_ICALL                                                 
   58   189        ASSERT_CHECK                                             
        190        INIT_FCALL                                               'assert'
        191        INIT_FCALL                                               'test'
        192        SEND_VAL                                                 <array>
        193        DO_FCALL                                      0  $63     
        194        TYPE_CHECK                                    8  ~64     $63
        195        SEND_VAL                                                 ~64
        196        SEND_VAL                                                 'assert%28test%28%5B%270e0%27+%3D%3E+%27%27%5D%29+%3D%3D%3D+true%29'
        197        DO_ICALL                                                 
        198      > RETURN                                                   1

Function test:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
Found catch point at position: 6
Branch analysis from position: 6
2 jumps found. (Code = 107) Position 1 = 7, Position 2 = -2
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/rRiAb
function name:  test
number of ops:  12
compiled vars:  !0 = $array, !1 = $e
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    7     1        INIT_FCALL_BY_NAME                                       'is_associative_array'
          2        SEND_VAR_EX                                              !0
          3        DO_FCALL                                      0  $2      
          4      > RETURN                                                   $2
          5*       JMP                                                      ->11
    9     6  E > > CATCH                                       last         'Exception'
   11     7    >   INIT_METHOD_CALL                                         !1, 'getMessage'
          8        DO_FCALL                                      0  $3      
          9        ECHO                                                     $3
   12    10      > RETURN                                                   'error'
   14    11*     > RETURN                                                   null

End of function test

Function is_associative_array:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/rRiAb
function name:  is_associative_array
number of ops:  2
compiled vars:  !0 = $array
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   16     0  E >   RECV                                             !0      
   19     1      > RETURN                                                   null

End of function is_associative_array

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
170.21 ms | 1406 KiB | 37 Q