3v4l.org

run code in 500+ PHP versions simultaneously
<?php $db = new PDO('sqlite::memory:'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $db->exec('CREATE TABLE example (name TEXT, vals TEXT);'); $insert = $db->prepare('INSERT INTO example (name, vals) VALUES (?, ?)'); $insert->execute(array('row1', '1,3,4')); $insert->execute(array('row2', '1')); $insert->execute(array('row3', '5,6')); function csv_intersection($vals, $search) { $vals_array = explode(',', $vals); $search_array = explode(',', $search); $intersection = array_intersect($vals_array, $search_array); return implode(',', $intersection); } $db->sqliteCreateFunction('intersection', 'csv_intersection', 2); $stmt = $db->prepare('SELECT name, vals FROM example WHERE intersection(vals, ?)'); $stmt->execute(array('1,2,3')); foreach ($stmt as $row) { var_dump($row); }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 41, Position 2 = 46
Branch analysis from position: 41
2 jumps found. (Code = 78) Position 1 = 42, Position 2 = 46
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 46
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 46
filename:       /in/AbcAR
function name:  (null)
number of ops:  48
compiled vars:  !0 = $db, !1 = $insert, !2 = $stmt, !3 = $row
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   NEW                                                  $4      'PDO'
          1        SEND_VAL_EX                                                  'sqlite%3A%3Amemory%3A'
          2        DO_FCALL                                          0          
          3        ASSIGN                                                       !0, $4
    4     4        INIT_METHOD_CALL                                             !0, 'setAttribute'
          5        SEND_VAL_EX                                                  3
          6        SEND_VAL_EX                                                  2
          7        DO_FCALL                                          0          
    5     8        INIT_METHOD_CALL                                             !0, 'setAttribute'
          9        SEND_VAL_EX                                                  19
         10        SEND_VAL_EX                                                  2
         11        DO_FCALL                                          0          
    7    12        INIT_METHOD_CALL                                             !0, 'exec'
         13        SEND_VAL_EX                                                  'CREATE+TABLE+example+%28name+TEXT%2C+vals+TEXT%29%3B'
         14        DO_FCALL                                          0          
    8    15        INIT_METHOD_CALL                                             !0, 'prepare'
         16        SEND_VAL_EX                                                  'INSERT+INTO+example+%28name%2C+vals%29+VALUES+%28%3F%2C+%3F%29'
         17        DO_FCALL                                          0  $10     
         18        ASSIGN                                                       !1, $10
    9    19        INIT_METHOD_CALL                                             !1, 'execute'
         20        SEND_VAL_EX                                                  <array>
         21        DO_FCALL                                          0          
   10    22        INIT_METHOD_CALL                                             !1, 'execute'
         23        SEND_VAL_EX                                                  <array>
         24        DO_FCALL                                          0          
   11    25        INIT_METHOD_CALL                                             !1, 'execute'
         26        SEND_VAL_EX                                                  <array>
         27        DO_FCALL                                          0          
   20    28        INIT_METHOD_CALL                                             !0, 'sqliteCreateFunction'
         29        SEND_VAL_EX                                                  'intersection'
         30        SEND_VAL_EX                                                  'csv_intersection'
         31        SEND_VAL_EX                                                  2
         32        DO_FCALL                                          0          
   22    33        INIT_METHOD_CALL                                             !0, 'prepare'
         34        SEND_VAL_EX                                                  'SELECT+name%2C+vals+FROM+example+WHERE+intersection%28vals%2C+%3F%29'
         35        DO_FCALL                                          0  $16     
         36        ASSIGN                                                       !2, $16
   23    37        INIT_METHOD_CALL                                             !2, 'execute'
         38        SEND_VAL_EX                                                  <array>
         39        DO_FCALL                                          0          
   24    40      > FE_RESET_R                                           $19     !2, ->46
         41    > > FE_FETCH_R                                                   $19, !3, ->46
   25    42    >   INIT_FCALL                                                   'var_dump'
         43        SEND_VAR                                                     !3
         44        DO_ICALL                                                     
   24    45      > JMP                                                          ->41
         46    >   FE_FREE                                                      $19
   26    47      > RETURN                                                       1

Function csv_intersection:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/AbcAR
function name:  csv_intersection
number of ops:  20
compiled vars:  !0 = $vals, !1 = $search, !2 = $vals_array, !3 = $search_array, !4 = $intersection
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   14     0  E >   RECV                                                 !0      
          1        RECV                                                 !1      
   15     2        INIT_FCALL                                                   'explode'
          3        SEND_VAL                                                     '%2C'
          4        SEND_VAR                                                     !0
          5        DO_ICALL                                             $5      
          6        ASSIGN                                                       !2, $5
   16     7        INIT_FCALL                                                   'explode'
          8        SEND_VAL                                                     '%2C'
          9        SEND_VAR                                                     !1
         10        DO_ICALL                                             $7      
         11        ASSIGN                                                       !3, $7
   17    12        INIT_FCALL                                                   'array_intersect'
         13        SEND_VAR                                                     !2
         14        SEND_VAR                                                     !3
         15        DO_ICALL                                             $9      
         16        ASSIGN                                                       !4, $9
   18    17        FRAMELESS_ICALL_2                implode             ~11     '%2C', !4
         18      > RETURN                                                       ~11
   19    19*     > RETURN                                                       null

End of function csv_intersection

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
172.06 ms | 2055 KiB | 16 Q