3v4l.org

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

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
180.05 ms | 1419 KiB | 42 Q