3v4l.org

run code in 500+ PHP versions simultaneously
<?php $a = [null]; echo 'null, valid cast: ' . array_product($a) . "\n\n"; $a = [false]; echo 'false, valid cast: ' . array_product($a) . "\n\n"; $a = [true]; echo 'true, valid cast: ' . array_product($a) . "\n\n"; $a = ['']; echo 'empty string, invalid cast: ' . array_product($a) . "\n\n"; $a = ['42.5']; echo 'string of a float, valid cast: ' . array_product($a) . "\n\n"; $a = ['42,5']; echo 'string of comma-separated float, valid cast but not desirable (discards trailing chars): ' . array_product($a) . "\n\n"; $a = ['42a']; echo 'string of int with trailing alpha char, valid cast but not desirable (discards trailing chars): ' . array_product($a) . "\n\n"; $a = ['a42']; echo 'string of int with leading alpha char, invalid cast: ' . array_product($a) . "\n\n"; $a = [[]]; echo 'array, invalid cast: ' . array_product($a) . "\n\n"; $a = [new stdClass()]; echo 'class that does not auto-cast, invalid cast: ' . array_product($a) . "\n\n"; $a = [gmp_init(42)]; echo 'gmp, valid cast: ' . array_product($a) . "\n\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/KdkVP
function name:  (null)
number of ops:  85
compiled vars:  !0 = $a
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, <array>
    4     1        INIT_FCALL                                                   'array_product'
          2        SEND_VAR                                                     !0
          3        DO_ICALL                                             $2      
          4        CONCAT                                               ~3      'null%2C+valid+cast%3A+', $2
          5        CONCAT                                               ~4      ~3, '%0A%0A'
          6        ECHO                                                         ~4
    6     7        ASSIGN                                                       !0, <array>
    7     8        INIT_FCALL                                                   'array_product'
          9        SEND_VAR                                                     !0
         10        DO_ICALL                                             $6      
         11        CONCAT                                               ~7      'false%2C+valid+cast%3A+', $6
         12        CONCAT                                               ~8      ~7, '%0A%0A'
         13        ECHO                                                         ~8
    9    14        ASSIGN                                                       !0, <array>
   10    15        INIT_FCALL                                                   'array_product'
         16        SEND_VAR                                                     !0
         17        DO_ICALL                                             $10     
         18        CONCAT                                               ~11     'true%2C+valid+cast%3A+', $10
         19        CONCAT                                               ~12     ~11, '%0A%0A'
         20        ECHO                                                         ~12
   12    21        ASSIGN                                                       !0, <array>
   13    22        INIT_FCALL                                                   'array_product'
         23        SEND_VAR                                                     !0
         24        DO_ICALL                                             $14     
         25        CONCAT                                               ~15     'empty+string%2C+invalid+cast%3A+', $14
         26        CONCAT                                               ~16     ~15, '%0A%0A'
         27        ECHO                                                         ~16
   15    28        ASSIGN                                                       !0, <array>
   16    29        INIT_FCALL                                                   'array_product'
         30        SEND_VAR                                                     !0
         31        DO_ICALL                                             $18     
         32        CONCAT                                               ~19     'string+of+a+float%2C+valid+cast%3A+', $18
         33        CONCAT                                               ~20     ~19, '%0A%0A'
         34        ECHO                                                         ~20
   18    35        ASSIGN                                                       !0, <array>
   19    36        INIT_FCALL                                                   'array_product'
         37        SEND_VAR                                                     !0
         38        DO_ICALL                                             $22     
         39        CONCAT                                               ~23     'string+of+comma-separated+float%2C+valid+cast+but+not+desirable+%28discards+trailing+chars%29%3A+', $22
         40        CONCAT                                               ~24     ~23, '%0A%0A'
         41        ECHO                                                         ~24
   21    42        ASSIGN                                                       !0, <array>
   22    43        INIT_FCALL                                                   'array_product'
         44        SEND_VAR                                                     !0
         45        DO_ICALL                                             $26     
         46        CONCAT                                               ~27     'string+of+int+with+trailing+alpha+char%2C+valid+cast+but+not+desirable+%28discards+trailing+chars%29%3A+', $26
         47        CONCAT                                               ~28     ~27, '%0A%0A'
         48        ECHO                                                         ~28
   24    49        ASSIGN                                                       !0, <array>
   25    50        INIT_FCALL                                                   'array_product'
         51        SEND_VAR                                                     !0
         52        DO_ICALL                                             $30     
         53        CONCAT                                               ~31     'string+of+int+with+leading+alpha+char%2C+invalid+cast%3A+', $30
         54        CONCAT                                               ~32     ~31, '%0A%0A'
         55        ECHO                                                         ~32
   27    56        ASSIGN                                                       !0, <array>
   28    57        INIT_FCALL                                                   'array_product'
         58        SEND_VAR                                                     !0
         59        DO_ICALL                                             $34     
         60        CONCAT                                               ~35     'array%2C+invalid+cast%3A+', $34
         61        CONCAT                                               ~36     ~35, '%0A%0A'
         62        ECHO                                                         ~36
   30    63        NEW                                                  $37     'stdClass'
         64        DO_FCALL                                          0          
         65        INIT_ARRAY                                           ~39     $37
         66        ASSIGN                                                       !0, ~39
   31    67        INIT_FCALL                                                   'array_product'
         68        SEND_VAR                                                     !0
         69        DO_ICALL                                             $41     
         70        CONCAT                                               ~42     'class+that+does+not+auto-cast%2C+invalid+cast%3A+', $41
         71        CONCAT                                               ~43     ~42, '%0A%0A'
         72        ECHO                                                         ~43
   33    73        INIT_FCALL_BY_NAME                                           'gmp_init'
         74        SEND_VAL_EX                                                  42
         75        DO_FCALL                                          0  $44     
         76        INIT_ARRAY                                           ~45     $44
         77        ASSIGN                                                       !0, ~45
   34    78        INIT_FCALL                                                   'array_product'
         79        SEND_VAR                                                     !0
         80        DO_ICALL                                             $47     
         81        CONCAT                                               ~48     'gmp%2C+valid+cast%3A+', $47
         82        CONCAT                                               ~49     ~48, '%0A%0A'
         83        ECHO                                                         ~49
         84      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
155.72 ms | 1522 KiB | 14 Q