3v4l.org

run code in 500+ PHP versions simultaneously
<?php $functionParameters = [ 'array_diff_assoc' => [ 1 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_diff_key' => [ 1 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_diff_uassoc' => [ /* * $array2 is actually at position 1, but has another required parameter after it, * so we need to detect on the last parameter. */ 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_diff_ukey' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_diff' => [ 1 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_intersect_assoc' => [ 1 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_intersect_key' => [ 1 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_intersect_uassoc' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_intersect_ukey' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_intersect' => [ 1 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_merge' => [ 0 => [ 'name' => 'array(s) to merge', '7.3' => true, '7.4' => false, ], ], 'array_merge_recursive' => [ 0 => [ 'name' => 'array(s) to merge', '7.3' => true, '7.4' => false, ], ], 'array_push' => [ 1 => [ 'name' => 'element to push', '7.2' => true, '7.3' => false, ], ], 'array_udiff_assoc' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_udiff_uassoc' => [ // Note from array_diff_uassoc applies here too. 3 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_udiff' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_uintersect_assoc' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_uintersect_uassoc' => [ // Note from array_diff_uassoc applies here too. 3 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_uintersect' => [ // Note from array_diff_uassoc applies here too. 2 => [ 'name' => 'array2', '7.4' => true, '8.0' => false, ], ], 'array_unshift' => [ 1 => [ 'name' => 'element to prepend', '7.2' => true, '7.3' => false, ], ], 'bcscale' => [ 0 => [ 'name' => 'scale', '7.2' => true, '7.3' => false, ], ], 'fgetcsv' => [ 1 => [ 'name' => 'length', '5.0' => true, '5.1' => false, ], ], 'ftp_fget' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_fput' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_get' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_nb_fget' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_nb_fput' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_nb_get' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_nb_put' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'ftp_put' => [ 3 => [ 'name' => 'mode', '7.2' => true, '7.3' => false, ], ], 'getenv' => [ 0 => [ 'name' => 'varname', '7.0' => true, '7.1' => false, ], ], 'imagepolygon' => [ /* * $num_points is actually at position 2, but has another required parameter after it, * so we need to detect on the last parameter. */ 3 => [ 'name' => 'num_points', '7.4' => true, '8.0' => false, ], ], 'imageopenpolygon' => [ // Note from imagepolygon applies here too. 3 => [ 'name' => 'num_points', '7.4' => true, '8.0' => false, ], ], 'imagefilledpolygon' => [ // Note from imagepolygon applies here too. 3 => [ 'name' => 'num_points', '7.4' => true, '8.0' => false, ], ], 'preg_match_all' => [ 2 => [ 'name' => 'matches', '5.3' => true, '5.4' => false, ], ], 'stream_socket_enable_crypto' => [ 2 => [ 'name' => 'crypto_type', '5.5' => true, '5.6' => false, ], ], 'xmlwriter_write_element' => [ 2 => [ 'name' => 'content', '5.2.2' => true, '5.2.3' => false, ], ], 'xmlwriter_write_element_ns' => [ 4 => [ 'name' => 'content', '5.2.2' => true, '5.2.3' => false, ], ], ]; $notVerified = []; $verified = []; foreach ($functionParameters as $functionName => $param) { try { $reflF = new ReflectionFunction( $functionName ); foreach ($param as $index => $info) { $params = $reflF->getParameters(); if (isset($params[$index])) { $php8name = $params[$index]->name; if ($info['name'] !== $php8name) { $verified[$functionName][$index]['name'] = $php8name; } } else { $notVerified[] = $functionName . '[' . $index . ' (' . $info['name'] . ') ]'; } } } catch (ReflectionException $e) { $notVerified[] = $functionName; continue; } } if (empty($notVerified) === false) { echo 'The following functions were skipped as they are not available on 3v4l:',PHP_EOL; var_export($notVerified); echo PHP_EOL, 'Manual verification still needed',PHP_EOL,PHP_EOL; } echo 'CHANGED:',PHP_EOL; var_export($verified);
Output for 8.0.13, 8.5.1 - 8.5.3
The following functions were skipped as they are not available on 3v4l: array ( 0 => 'array_diff_uassoc[2 (array2) ]', 1 => 'array_diff_ukey[2 (array2) ]', 2 => 'array_intersect_uassoc[2 (array2) ]', 3 => 'array_intersect_ukey[2 (array2) ]', 4 => 'array_udiff_assoc[2 (array2) ]', 5 => 'array_udiff_uassoc[3 (array2) ]', 6 => 'array_udiff[2 (array2) ]', 7 => 'array_uintersect_assoc[2 (array2) ]', 8 => 'array_uintersect_uassoc[3 (array2) ]', 9 => 'array_uintersect[2 (array2) ]', 10 => 'bcscale', 11 => 'ftp_fget', 12 => 'ftp_fput', 13 => 'ftp_get', 14 => 'ftp_nb_fget', 15 => 'ftp_nb_fput', 16 => 'ftp_nb_get', 17 => 'ftp_nb_put', 18 => 'ftp_put', 19 => 'imagepolygon', 20 => 'imageopenpolygon', 21 => 'imagefilledpolygon', ) Manual verification still needed CHANGED: array ( 'array_diff_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_merge' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_merge_recursive' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_push' => array ( 1 => array ( 'name' => 'values', ), ), 'array_unshift' => array ( 1 => array ( 'name' => 'values', ), ), 'getenv' => array ( 0 => array ( 'name' => 'name', ), ), 'stream_socket_enable_crypto' => array ( 2 => array ( 'name' => 'crypto_method', ), ), )
Output for 8.0.0 - 8.0.12, 8.0.14 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0
The following functions were skipped as they are not available on 3v4l: array ( 0 => 'array_diff_uassoc[2 (array2) ]', 1 => 'array_diff_ukey[2 (array2) ]', 2 => 'array_intersect_uassoc[2 (array2) ]', 3 => 'array_intersect_ukey[2 (array2) ]', 4 => 'array_udiff_assoc[2 (array2) ]', 5 => 'array_udiff_uassoc[3 (array2) ]', 6 => 'array_udiff[2 (array2) ]', 7 => 'array_uintersect_assoc[2 (array2) ]', 8 => 'array_uintersect_uassoc[3 (array2) ]', 9 => 'array_uintersect[2 (array2) ]', 10 => 'ftp_fget', 11 => 'ftp_fput', 12 => 'ftp_get', 13 => 'ftp_nb_fget', 14 => 'ftp_nb_fput', 15 => 'ftp_nb_get', 16 => 'ftp_nb_put', 17 => 'ftp_put', 18 => 'imagepolygon', 19 => 'imageopenpolygon', 20 => 'imagefilledpolygon', ) Manual verification still needed CHANGED: array ( 'array_diff_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_merge' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_merge_recursive' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_push' => array ( 1 => array ( 'name' => 'values', ), ), 'array_unshift' => array ( 1 => array ( 'name' => 'values', ), ), 'getenv' => array ( 0 => array ( 'name' => 'name', ), ), 'stream_socket_enable_crypto' => array ( 2 => array ( 'name' => 'crypto_method', ), ), )
Output for 7.4.26, 7.4.33
The following functions were skipped as they are not available on 3v4l: array ( 0 => 'bcscale', 1 => 'ftp_fget', 2 => 'ftp_fput', 3 => 'ftp_get', 4 => 'ftp_nb_fget', 5 => 'ftp_nb_fput', 6 => 'ftp_nb_get', 7 => 'ftp_nb_put', 8 => 'ftp_put', 9 => 'imagepolygon', 10 => 'imageopenpolygon', 11 => 'imagefilledpolygon', ) Manual verification still needed CHANGED: array ( 'array_diff_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_uassoc' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_diff_ukey' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_diff' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_uassoc' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect_ukey' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_merge' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_merge_recursive' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_push' => array ( 1 => array ( 'name' => 'vars', ), ), 'array_udiff_assoc' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff_uassoc' => array ( 3 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_uintersect_assoc' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_uintersect_uassoc' => array ( 3 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_uintersect' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_unshift' => array ( 1 => array ( 'name' => 'vars', ), ), 'preg_match_all' => array ( 2 => array ( 'name' => 'subpatterns', ), ), 'stream_socket_enable_crypto' => array ( 2 => array ( 'name' => 'cryptokind', ), ), )
Output for 7.4.0 - 7.4.25, 7.4.27 - 7.4.32
The following functions were skipped as they are not available on 3v4l: array ( 0 => 'ftp_fget', 1 => 'ftp_fput', 2 => 'ftp_get', 3 => 'ftp_nb_fget', 4 => 'ftp_nb_fput', 5 => 'ftp_nb_get', 6 => 'ftp_nb_put', 7 => 'ftp_put', 8 => 'imagepolygon', 9 => 'imageopenpolygon', 10 => 'imagefilledpolygon', ) Manual verification still needed CHANGED: array ( 'array_diff_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_uassoc' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_diff_ukey' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_diff' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_uassoc' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect_ukey' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_merge' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_merge_recursive' => array ( 0 => array ( 'name' => 'arrays', ), ), 'array_push' => array ( 1 => array ( 'name' => 'vars', ), ), 'array_udiff_assoc' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff_uassoc' => array ( 3 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_uintersect_assoc' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_uintersect_uassoc' => array ( 3 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_uintersect' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_unshift' => array ( 1 => array ( 'name' => 'vars', ), ), 'preg_match_all' => array ( 2 => array ( 'name' => 'subpatterns', ), ), 'stream_socket_enable_crypto' => array ( 2 => array ( 'name' => 'cryptokind', ), ), )
Output for 7.3.0 - 7.3.31, 7.3.33
The following functions were skipped as they are not available on 3v4l: array ( 0 => 'ftp_fget', 1 => 'ftp_fput', 2 => 'ftp_get', 3 => 'ftp_nb_fget', 4 => 'ftp_nb_fput', 5 => 'ftp_nb_get', 6 => 'ftp_nb_put', 7 => 'ftp_put', 8 => 'imagepolygon', 9 => 'imageopenpolygon', 10 => 'imagefilledpolygon', ) Manual verification still needed CHANGED: array ( 'array_diff_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_uassoc' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_diff_ukey' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_diff' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_uassoc' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect_ukey' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_merge' => array ( 0 => array ( 'name' => 'arr1', ), ), 'array_merge_recursive' => array ( 0 => array ( 'name' => 'arr1', ), ), 'array_push' => array ( 1 => array ( 'name' => 'vars', ), ), 'array_udiff_assoc' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff_uassoc' => array ( 3 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_uintersect_assoc' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_uintersect_uassoc' => array ( 3 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_uintersect' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_unshift' => array ( 1 => array ( 'name' => 'vars', ), ), 'preg_match_all' => array ( 2 => array ( 'name' => 'subpatterns', ), ), 'stream_socket_enable_crypto' => array ( 2 => array ( 'name' => 'cryptokind', ), ), )
Output for 7.3.32
The following functions were skipped as they are not available on 3v4l: array ( 0 => 'bcscale', 1 => 'ftp_fget', 2 => 'ftp_fput', 3 => 'ftp_get', 4 => 'ftp_nb_fget', 5 => 'ftp_nb_fput', 6 => 'ftp_nb_get', 7 => 'ftp_nb_put', 8 => 'ftp_put', 9 => 'imagepolygon', 10 => 'imageopenpolygon', 11 => 'imagefilledpolygon', ) Manual verification still needed CHANGED: array ( 'array_diff_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_diff_uassoc' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_diff_ukey' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_diff' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_assoc' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_key' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_intersect_uassoc' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect_ukey' => array ( 2 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_intersect' => array ( 1 => array ( 'name' => 'arrays', ), ), 'array_merge' => array ( 0 => array ( 'name' => 'arr1', ), ), 'array_merge_recursive' => array ( 0 => array ( 'name' => 'arr1', ), ), 'array_push' => array ( 1 => array ( 'name' => 'vars', ), ), 'array_udiff_assoc' => array ( 2 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff_uassoc' => array ( 3 => array ( 'name' => 'callback_key_comp_func', ), ), 'array_udiff' => array ( 2 => array ( 'name' => 'callback_data_comp_func', ), ), 'array_uintersect_assoc' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_uintersect_uassoc' => array ( 3 => array ( 'name' => 'callback_key_compare_func', ), ), 'array_uintersect' => array ( 2 => array ( 'name' => 'callback_data_compare_func', ), ), 'array_unshift' => array ( 1 => array ( 'name' => 'vars', ), ), 'preg_match_all' => array ( 2 => array ( 'name' => 'subpatterns', ), ), 'stream_socket_enable_crypto' => array ( 2 => array ( 'name' => 'cryptokind', ), ), )

preferences:
118.37 ms | 1824 KiB | 4 Q