3v4l.org

run code in 300+ PHP versions simultaneously
<?php restore_error_handler(); // funzione di gestione dell'errore function myErrorHandler ($errno, $errstr, $errfile, $errline) { switch ($errno) { case FATAL: echo "<b>FATAL</b> [$errno] $errstr<br>\n"; echo " Fatal error in line ".$errline." of file ".$errfile; echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n"; echo "Aborting...<br>\n"; exit 1; break; case ERROR: echo "<b>ERROR</b> [$errno] $errstr<br>\n"; break; case WARNING: echo "<b>WARNING</b> [$errno] $errstr<br>\n"; break; default: echo "Unkown error type: [$errno] $errstr<br>\n"; break; } } // funzione di prova del gestore di errore function scale_by_log ($vect, $scale) { if ( !is_numeric($scale) || $scale <= 0 ) trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale", FATAL); if (!is_array($vect)) { trigger_error("Incorrect input vector, array of values expected", ERROR); return null; } for ($i=0; $i<count($vect); $i++) { if (!is_numeric($vect[$i])) trigger_error("Value at position $i is not a number, using 0 (zero)", WARNING); $temp[$i] = log($scale) * $vect[$i]; } return $temp; } // configura il gestore dell'errore definito dall'utente $old_error_handler = set_error_handler("myErrorHandler"); // attiva alcuni errori, definendo prima un array misto con elementi non numerici echo "vector a\n"; $a = array(2,3,"foo",5.5,43.3,21.11); print_r($a); // genera il secondo array, generando un avviso echo "----\nvector b - a warning (b = log(PI) * a)\n"; $b = scale_by_log($a, M_PI); print_r($b); // questo è il problema, passiamo una stringa al posto di un array echo "----\nvector c - an error\n"; $c = scale_by_log("not array",2.3); var_dump($c); // errore critico, il log di zero o di un numero negativo non è definito echo "----\nvector d - fatal error\n"; $d = scale_by_log($a, -2.5); ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.200.0100.03912.40
5.4.190.0140.04512.38
5.4.180.0190.04512.38
5.4.170.0170.04212.39
5.4.160.0160.04312.38
5.4.150.0240.09412.38
5.4.140.0120.04612.07
5.4.130.0140.04412.05
5.4.120.0170.04112.02
5.4.110.0150.04212.02
5.4.100.0140.04312.02
5.4.90.0200.03812.02
5.4.80.0250.06612.02
5.4.70.0190.04312.02
5.4.60.0160.04312.02
5.4.50.0130.04312.01
5.4.40.0130.04612.00
5.4.30.0120.04512.00
5.4.20.0180.04111.98
5.4.10.0170.04012.00
5.4.00.0120.04511.49
5.3.270.0190.04412.73
5.3.260.0190.04212.72
5.3.250.0180.04512.72
5.3.240.0190.04212.72
5.3.230.0130.05312.71
5.3.220.0160.04312.68
5.3.210.0100.05312.68
5.3.200.0150.04412.68
5.3.190.0160.04712.68
5.3.180.0200.04312.68
5.3.170.0200.04412.67
5.3.160.0420.08612.67
5.3.150.0150.04812.68
5.3.140.0140.04912.66
5.3.130.0170.04712.65
5.3.120.0170.04812.66
5.3.110.0160.04912.66
5.3.100.0250.05812.12
5.3.90.0350.08912.08
5.3.80.0120.05012.07
5.3.70.0920.05612.07
5.3.60.0160.04212.07
5.3.50.0170.04212.00
5.3.40.0090.05112.00
5.3.30.0200.03711.97
5.3.20.0140.04611.75
5.3.10.0160.04011.71
5.3.00.0190.03611.70

preferences:
138.67 ms | 1394 KiB | 7 Q