3v4l.org

run code in 300+ PHP versions simultaneously
<?php function expandArguments(&$query, &$args) { $modified = FALSE; foreach (array_filter($args, 'is_array') as $key => $data) { $new_keys = array(); var_dump($data); foreach ($data as $i => $value) { $new_keys[$key . '_' . $i] = $value; } $query = preg_replace( '#' . $key . '\b#', implode(', ', array_keys($new_keys)), $query ); unset($args[$key]); $args += $new_keys; $modified = TRUE; } return $modified; } function expandArguments2(&$query, &$args) { $modified = FALSE; foreach (array_filter($args, 'is_array') as $key => $data) { $new_keys = array(); var_dump($data); foreach (array_values($data) as $i => $value) { $new_keys[$key . '_' . $i] = $value; } $query = preg_replace( '#' . $key . '\b#', implode(', ', array_keys($new_keys)), $query ); unset($args[$key]); $args += $new_keys; $modified = TRUE; } return $modified; } $query = "SELECT * FROM foo WHERE id IN (:ids)"; $args = array( 'ids' => array( 1, 2, '0); DROP TABLE foo; --' => 3 ) ); expandArguments($query, $args); var_dump($query, $args); $query = "SELECT * FROM foo WHERE id IN (:ids)"; $args = array( 'ids' => array( 1, 2, '0); DROP TABLE foo; --' => 3 ) ); expandArguments2($query, $args); var_dump($query, $args);
Output for git.master, git.master_jit, rfc.property-hooks
array(3) { [0]=> int(1) [1]=> int(2) ["0); DROP TABLE foo; --"]=> int(3) } string(73) "SELECT * FROM foo WHERE id IN (:ids_0, ids_1, ids_0); DROP TABLE foo; --)" array(3) { ["ids_0"]=> int(1) ["ids_1"]=> int(2) ["ids_0); DROP TABLE foo; --"]=> int(3) } array(3) { [0]=> int(1) [1]=> int(2) ["0); DROP TABLE foo; --"]=> int(3) } string(52) "SELECT * FROM foo WHERE id IN (:ids_0, ids_1, ids_2)" array(3) { ["ids_0"]=> int(1) ["ids_1"]=> int(2) ["ids_2"]=> int(3) }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
35.03 ms | 402 KiB | 8 Q