3v4l.org

run code in 500+ PHP versions simultaneously
<?php header('Content-Type: application/json; charset=utf-8'); mb_internal_encoding('UTF-8'); if ($_SERVER['REQUEST_METHOD'] !== 'POST') { echo json_encode(['success' => false, 'errors' => ['request' => 'Изисква се POST заявка']], JSON_UNESCAPED_UNICODE); exit; } $contentType = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : ''; if (stripos($contentType, 'application/json') !== false) { $raw = file_get_contents('php://input'); $data = json_decode($raw, true); if (!is_array($data)) { $data = []; } } else { $data = $_POST; } $errors = []; if (!isset($data['name']) || trim((string)$data['name']) === '') { $errors['name'] = 'Името на предмета е задължително поле'; } else { $name = trim((string)$data['name']); $len = mb_strlen($name); if ($len < 2) { $errors['name'] = 'Името на предмета трябва да е с дължина поне 2 символа, а вие сте въвели ' . $len; } else if ($len > 150) { $errors['name'] = 'Името на предмета трябва да е с дължина най-много 150 символа, а вие сте въвели ' . $len; } } if (!isset($data['teacher']) || trim((string)$data['teacher']) === '') { $errors['teacher'] = 'Името на преподавателя е задължително поле'; } else { $teacher = trim((string)$data['teacher']); $len = mb_strlen($teacher); if ($len < 3) { $errors['teacher'] = 'Името на преподавателя трябва да е с дължина поне 3 символа, а вие сте въвели ' . $len; } else if ($len > 200) { $errors['teacher'] = 'Името на преподавателя трябва да е с дължина най-много 200 символа, а вие сте въвели ' . $len; } } if (!isset($data['description']) || trim((string)$data['description']) === '') { $errors['description'] = 'Описанието е задължително поле'; } else { $description = trim((string)$data['description']); $len = mb_strlen($description); if ($len < 10) { $errors['description'] = 'Описанието трябва да е с дължина поне 10 символа, а вие сте въвели ' . $len; } } $validGroups = ['М', 'ПМ', 'ОКН', 'ЯКН']; if (!isset($data['group']) || trim((string)$data['group']) === '') { $errors['group'] = 'Групата е задължително поле'; } else { $group = trim((string)$data['group']); if (!in_array($group, $validGroups, true)) { $errors['group'] = 'Невалидна група, изберете една от М, ПМ, ОКН и ЯКН'; } } if (!isset($data['credits']) || $data['credits'] === '') { $errors['credits'] = 'Кредитите са задължително поле'; } else { $credits = $data['credits']; if (is_string($credits)) { $credits = trim($credits); } if (!is_int($credits) && !(is_string($credits) && ctype_digit($credits))) { $errors['credits'] = 'Кредитите трябва да са цяло положително число'; } else { $creditsInt = (int)$credits; if ($creditsInt <= 0) { $errors['credits'] = 'Кредитите трябва да са цяло положително число'; } } } if (empty($errors)) { echo json_encode(['success' => true], JSON_UNESCAPED_UNICODE); } else { echo json_encode(['success' => false, 'errors' => $errors], JSON_UNESCAPED_UNICODE); } header('Content-Type: application/json; charset=utf-8'); mb_internal_encoding('UTF-8'); if ($_SERVER['REQUEST_METHOD'] !== 'POST') { echo json_encode(['success' => false, 'errors' => ['request' => 'Изисква се POST заявка']], JSON_UNESCAPED_UNICODE); exit; } $contentType = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : ''; if (stripos($contentType, 'application/json') !== false) { $raw = file_get_contents('php://input'); $data = json_decode($raw, true); if (!is_array($data)) { $data = []; } } else { $data = $_POST; } $errors = []; if (!isset($data['name']) || trim((string)$data['name']) === '') { $errors['name'] = 'Името на предмета е задължително поле'; } else { $name = trim((string)$data['name']); $len = mb_strlen($name); if ($len < 2) { $errors['name'] = 'Името на предмета трябва да е с дължина поне 2 символа, а вие сте въвели ' . $len; } else if ($len > 150) { $errors['name'] = 'Името на предмета трябва да е с дължина най-много 150 символа, а вие сте въвели ' . $len; } } if (!isset($data['teacher']) || trim((string)$data['teacher']) === '') { $errors['teacher'] = 'Името на преподавателя е задължително поле'; } else { $teacher = trim((string)$data['teacher']); $len = mb_strlen($teacher); if ($len < 3) { $errors['teacher'] = 'Името на преподавателя трябва да е с дължина поне 3 символа, а вие сте въвели ' . $len; } else if ($len > 200) { $errors['teacher'] = 'Името на преподавателя трябва да е с дължина най-много 200 символа, а вие сте въвели ' . $len; } } if (!isset($data['description']) || trim((string)$data['description']) === '') { $errors['description'] = 'Описанието е задължително поле'; } else { $description = trim((string)$data['description']); $len = mb_strlen($description); if ($len < 10) { $errors['description'] = 'Описанието трябва да е с дължина поне 10 символа, а вие сте въвели ' . $len; } } $validGroups = ['М', 'ПМ', 'ОКН', 'ЯКН']; if (!isset($data['group']) || trim((string)$data['group']) === '') { $errors['group'] = 'Групата е задължително поле'; } else { $group = trim((string)$data['group']); if (!in_array($group, $validGroups, true)) { $errors['group'] = 'Невалидна група, изберете една от М, ПМ, ОКН и ЯКН'; } } if (!isset($data['credits']) || $data['credits'] === '') { $errors['credits'] = 'Кредитите са задължително поле'; } else { $credits = $data['credits']; if (is_string($credits)) { $credits = trim($credits); } if (!is_int($credits) && !(is_string($credits) && ctype_digit($credits))) { $errors['credits'] = 'Кредитите трябва да са цяло положително число'; } else { $creditsInt = (int)$credits; if ($creditsInt <= 0) { $errors['credits'] = 'Кредитите трябва да са цяло положително число'; } } } if (empty($errors)) { echo json_encode(['success' => true], JSON_UNESCAPED_UNICODE); } else { echo json_encode(['success' => false, 'errors' => $errors], JSON_UNESCAPED_UNICODE); }

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)
8.5.70.0210.00616.90
8.5.60.0120.00416.96
8.5.50.0270.00517.00
8.5.40.0150.00416.88
8.5.30.0120.00817.00
8.5.20.0250.00416.83
8.5.10.0220.00716.64
8.5.00.0030.00816.83
8.4.220.0040.00519.71
8.4.210.0150.00419.59
8.4.200.0160.00419.61
8.4.190.0160.00419.76
8.4.180.0180.00619.74
8.4.170.0180.00519.61
8.4.160.0140.00619.90
8.4.150.0160.00319.79
8.4.140.0170.00217.87
8.4.130.0150.00317.70
8.4.120.0170.00317.91
8.4.110.0150.00518.02
8.4.100.0190.00117.93
8.4.90.0140.00418.11
8.4.80.0150.00618.25
8.4.70.0130.00617.82
8.4.60.0180.00517.81
8.4.50.0170.00117.76
8.4.40.0160.00417.95
8.4.30.0170.00317.89
8.4.20.0180.00317.92
8.4.10.0170.00517.75
8.3.310.0130.00518.51
8.3.300.0170.00718.37
8.3.290.0110.00618.26
8.3.280.0140.00518.51
8.3.270.0160.00416.62
8.3.260.0260.00716.77
8.3.250.0180.00616.66
8.3.240.0190.00516.68
8.3.230.0200.00316.71
8.3.220.0180.00816.76
8.3.210.0180.00616.86
8.3.200.0100.00716.65
8.3.190.0130.00616.71
8.3.180.0130.00616.68
8.3.170.0200.00516.93
8.3.160.0150.00416.98
8.3.150.0190.00316.72
8.3.140.0160.00416.60
8.3.130.0150.00316.65
8.3.120.0100.00716.85
8.3.110.0120.00616.61
8.3.100.0140.00516.91
8.3.90.0180.00416.93
8.3.80.0150.00516.83
8.3.70.0130.00516.89
8.3.60.0180.00216.60
8.3.50.0140.00416.91
8.3.40.0180.00417.96
8.3.30.0130.00317.95
8.3.20.0140.00318.11
8.3.10.0140.00218.16
8.3.00.0130.00618.02
8.2.310.0140.00518.06

preferences:
43.78 ms | 755 KiB | 4 Q