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); }
Output for 8.5.0 - 8.5.7
Deprecated: Method PDO::sqliteCreateFunction() is deprecated since 8.5, use Pdo\Sqlite::createFunction() instead in /in/AbcAR on line 20 array(2) { ["name"]=> string(4) "row1" ["vals"]=> string(5) "1,3,4" } array(2) { ["name"]=> string(4) "row2" ["vals"]=> string(1) "1" }
Output for 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.31, 8.3.0 - 8.3.31, 8.4.1 - 8.4.22
array(2) { ["name"]=> string(4) "row1" ["vals"]=> string(5) "1,3,4" } array(2) { ["name"]=> string(4) "row2" ["vals"]=> string(1) "1" }

preferences:
114.91 ms | 1420 KiB | 4 Q