3v4l.org

run code in 300+ PHP versions simultaneously
<?php define('WAR_CODES', [ ' ' => '', // World War 1 'A' => 'Allied Forces', 'AFG' => 'Australian - War on Terrorism', 'AGX' => 'Act of Grace', 'ALX' => 'Algeria - World War 2', 'ARG' => 'Argentina - Gulf War', 'ARX' => 'Argentina - World War 2', 'BAG' => 'Bahrain - Gulf War', 'BAL' => 'Peacekeeping - Balkans', 'BCG' => 'Bangladesh - Gulf War', 'BG' => 'Belgium - World War 1', 'BGG' => 'Belgium - Gulf War', 'BGK' => 'Belgium - Korean War', 'BGX' => 'Belgium - World War 2', 'BRX' => 'Brazil - World War 2', 'BUG' => 'Bulgaria - Gulf War', 'BUR' => 'Burma', 'BUX' => 'Bulgaria - World War 2', 'CAM' => 'Australian - Cambodian Service', 'CCG' => 'Canadian - Gulf War', 'CHX' => 'China - World War 2', 'CIX' => 'Chile - World War 2', 'CLK' => 'Colombia - Korean War', 'CN' => 'Canadian - World War 1', 'CNK' => 'Canadian - Korean War', 'CNS' => 'Canadian - Other Service', 'CNX' => 'Canadian - World War 2', 'CON' => 'Peacekeeping - Congo', 'CYP' => 'Peacekeeping - Cyprus', 'CZG' => 'Czechoslovakia - Gulf War', 'CZX' => 'Czechoslovakia - World War 2', 'DEG' => 'Denmark - Gulf War', 'DNK' => 'Denmark - Korean War', 'DNX' => 'Denmark - World War 2', 'EGG' => 'Egypt - Gulf War', 'EGX' => 'Egypt - World War 2', 'EGY' => 'Peacekeeping - Egypt', 'ESX' => 'Estonia - World War 2', 'ET' => 'Australian - East Timor Service', 'ETK' => 'Ethiopia - Korean War', 'ETX' => 'Ethiopia - World War 2', 'FIJ' => 'Fiji', 'FIX' => 'Finland - World War 2', 'FR' => 'France - World War 1', 'FRG' => 'France - Gulf War', 'FRK' => 'France - Korean War', 'FRX' => 'France - World War 2', 'FW' => 'Australian - World War 1', 'GHA' => 'Ghana', 'GR' => 'Greece - World War 1', 'GRE' => 'Peacekeeping - Greece', 'GRG' => 'Greece - Gulf War', 'GRK' => 'Greece - Korean War', 'GRX' => 'Greece - World War 2', 'GW' => 'Australian - Gulf War Service', 'HKS' => 'Hong Kong', 'HKX' => 'Hong Kong - World War 2', 'HLG' => 'Netherlands - Gulf War', 'HLK' => 'Netherlands - Korea', 'HLX' => 'Netherlands - World War 2', 'HUX' => 'Hungary - World War 2', 'IDA' => 'Peacekeeping - Indonesia', 'IND' => 'India', 'IQ' => 'Australian - War in Iraq', 'ISR' => 'Peacekeeping - Israel', 'IT' => 'Italy - World War 1', 'ITG' => 'Italy - Gulf War', 'ITK' => 'Italy - Korean War', 'ITX' => 'Italy - World War 2', 'IV' => 'Indigenous Veterans of PNG', 'JA' => 'Japan - World War 1', 'KM' => 'Australian - Korean/Malayan Service', 'KO' => 'South Korea - Korean War', 'KOS' => 'South Korea - Vietnam War', 'KSH' => 'Peacekeeping - Kashmir', 'KUG' => 'Kuwait - Gulf War', 'KYA' => 'Kenya', 'LAX' => 'Latvia - World War 2', 'LBX' => 'Liberia - World War 2', 'LXK' => 'Luxembourg - Korean War', 'MAL' => 'Malaysian Pensioners', 'MAR' => 'Allied Mariner- World War 2', 'MAU' => 'Mauritius', 'MLS' => 'Malaysia/Singapore', 'MO' => 'Montenegro - World War 1', 'MOG' => 'Morocco - Gulf War', 'MTX' => 'Malta - World War 2', 'MWI' => 'Malawi', 'N' => 'New Zealand - World War 1', 'NBA' => 'Australian - Namibian Service', 'NCG' => 'New Zealand - Gulf War', 'NF' => 'Newfoundland', 'NG' => 'New Guinea Civilians', 'NGR' => 'Nigeria', 'NIG' => 'Niger - Gulf War', 'NK' => 'New Zealand - Korean War', 'NRD' => 'Northern Zimbabwe (Rhodesia)', 'NSM' => 'New Zealand - Serving Member', 'NSS' => 'New Zealand Special O\'seas Service', 'NSW' => 'New Zealand Merchant Mariner - WW2', 'NWG' => 'Norway - Gulf War', 'NWK' => 'Norway - Korean War', 'NWX' => 'Norway - World War 2', 'NX' => 'New Zealand - World War 2', 'OMG' => 'Oman - Gulf War', 'P' => 'British - World War 1', 'PAD' => 'British Admiralty', 'PAG' => 'Pakistan - Gulf War', 'PAL' => 'Peacekeeping - Palestine', 'PAM' => 'British Air Ministry', 'PAX' => 'Panama - World War 2', 'PCA' => 'British Crown Agents', 'PCG' => 'British - Gulf War', 'PCR' => 'British Ministry O\'seas Development', 'PCV' => 'British Civilians', 'PHK' => 'Philippines - Korean War', 'PHS' => 'Philippines - Vietnam War', 'PHX' => 'Philippines - World War 2', 'PK' => 'British - Korean/Malayan Service', 'PLG' => 'Poland - Gulf War', 'PLX' => 'Poland - World War 2', 'PMS' => 'British Merchant Mariner - WW1', 'PO' => 'Portugal - World War 1', 'PSM' => 'British Serving Member', 'PSW' => 'British Merchant Mariner - WW2', 'PWO' => 'British War Office', 'PX' => 'British - World War 2', 'QAG' => 'Qatar - Gulf War', 'RD' => 'Zimbabwe (Rhodesia) - World War 1', 'RDX' => 'Zimbabwe (Rhodesia) - World War 2', 'RM' => 'Romania - World War 1', 'RU' => 'Russia - World War 1', 'RUG' => 'Russia - Gulf War', 'RUX' => 'Russia - World War 2', 'SA' => 'South Africa - World War 1', 'SAG' => 'Saudi Arabia - Gulf War', 'SAX' => 'South Africa - World War 2', 'SCG' => 'Sierra Leone - Gulf War', 'SE' => 'Serbia - World War 1', 'SEG' => 'Senegal - Gulf War', 'SIN' => 'Peacekeeping - Sinai', 'SL' => 'Sierra Leone', 'SM' => 'Australian - Serving Member', 'SO' => 'Australian - Somalian Service', 'SPG' => 'Spain - Gulf War', 'SR' => 'Australian - Malayan Emergency', 'SS' => 'Australian Special Overseas Service', 'SUD' => 'Sudan', 'SWK' => 'Sweden - Korean War', 'SWP' => 'Australian Merchant Mariner - WW2', 'SYG' => 'Syria - Gulf War', 'SYR' => 'Peacekeeping - Syria', 'SYX' => 'Syria - World War 2', 'THK' => 'Thailand - Korean War', 'THS' => 'Thailand - Vietnam War', 'TRG' => 'Turkey - Gulf War', 'TRK' => 'Turkey - Korean War', 'TZA' => 'Tanzania (Tanzanyika/Zanzibar)', 'UAG' => 'United Arab Emirates - Gulf War', 'UB' => 'Australian - Ubon 1965-68', 'URX' => 'Uruguay - World War 2', 'US' => 'United States - World War 1', 'USG' => 'United States - Gulf War', 'USK' => 'United States - Korean War', 'USS' => 'United States - Vietnam War', 'USX' => 'United States - World War 2', 'V' => 'Australian - Serving Member', 'VEX' => 'Venezuela - World War 2', 'VNS' => 'South Vietnam - Vietnam War', 'X' => 'Australian - World War 2', 'YEM' => 'Peacekeeping - Yemen', 'YGX' => 'Yugoslavia - World War 2', 'YU' => 'Australian - Yugoslavian Service', 'ZIM' => 'Peacekeeping - Zimbabwe', ]); $groups = [1 => '']; foreach (WAR_CODES as $code => $description) { switch (strlen($code)) { case 1: $groups[1] .= $code; break; case 2: $groups[2][$code[0]][] = $code[1]; break; case 3: $groups[3][$code[0]][$code[1]][] = $code[2]; break; } } $groups[1] = "[{$groups[1]}]\d{6}"; foreach ($groups[2] as $first => &$seconds) { $seconds = count($seconds) === 1 ? "$first{$seconds[0]}" : sprintf('%s[%s]', $first, implode($seconds)); } $groups[2] = '(?:' . implode('|', $groups[2]) . ')\d{5}'; foreach ($groups[3] as $first => &$seconds) { foreach ($seconds as $second => &$thirds) { $thirds = count($thirds) === 1 ? "$second{$thirds[0]}" : sprintf('%s[%s]', $second, implode($thirds)); } $seconds = count($seconds) === 1 ? "$first$thirds" : sprintf('%s(?:%s)', $first, implode('|', $seconds)); } $groups[3] = '(?:' . implode('|', $groups[3]) . ')\d{4}'; ksort($groups); echo implode("\n|", $groups);

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.4.120.0110.01024.11
8.4.110.0070.00322.55
8.4.100.0130.00817.59
8.4.90.0110.00920.75
8.4.80.0110.00917.95
8.4.70.0110.00917.85
8.4.60.0110.01218.88
8.4.50.0090.00818.73
8.4.40.0130.00619.46
8.4.30.0170.00320.54
8.4.20.0110.00717.89
8.4.10.0090.00922.11
8.3.250.0110.00818.97
8.3.240.0060.00517.42
8.3.230.0080.00816.72
8.3.220.0110.00921.22
8.3.210.0100.00518.26
8.3.200.0060.00416.75
8.3.190.0130.00717.20
8.3.180.0090.01118.86
8.3.170.0090.00920.87
8.3.160.0120.00617.12
8.3.150.0090.00916.82
8.3.140.0040.00417.15
8.3.130.0000.00818.50
8.3.120.0160.00019.11
8.3.110.0100.01020.94
8.3.100.0060.00324.06
8.3.90.0000.00826.77
8.3.80.0030.00616.75
8.3.70.0090.00616.61
8.3.60.0100.01316.75
8.3.50.0070.01420.30
8.3.40.0080.00821.98
8.3.30.0160.00618.71
8.3.20.0040.00424.18
8.3.10.0080.00024.66
8.3.00.0040.00426.16
8.2.290.0100.01122.15
8.2.280.0120.00718.50
8.2.270.0060.00916.58
8.2.260.0000.01816.89
8.2.250.0000.00816.89
8.2.240.0050.00318.84
8.2.230.0090.00322.58
8.2.220.0080.00037.54
8.2.210.0040.00426.77
8.2.200.0060.00316.88
8.2.190.0060.00916.58
8.2.180.0100.01025.92
8.2.170.0040.01119.22
8.2.160.0140.00022.96
8.2.150.0000.00925.66
8.2.140.0040.00424.66
8.2.130.0040.00426.16
8.2.120.0040.00420.57
8.2.110.0060.00322.25
8.2.100.0050.00518.03
8.2.90.0060.00319.50
8.2.80.0030.00517.97
8.2.70.0040.00417.50
8.2.60.0000.00817.93
8.2.50.0060.00318.07
8.2.40.0050.00320.01
8.2.30.0080.00018.19
8.2.20.0030.00620.45
8.2.10.0000.00818.27
8.2.00.0040.00419.30
8.1.330.0050.00422.25
8.1.320.0100.00817.66
8.1.310.0000.00916.27
8.1.300.0110.00818.31
8.1.290.0060.00318.88
8.1.280.0120.00325.92
8.1.270.0060.00320.39
8.1.260.0060.00326.35
8.1.250.0040.00428.09
8.1.240.0030.00719.02
8.1.230.0080.00419.15
8.1.220.0000.00817.91
8.1.210.0000.00818.77
8.1.200.0030.00617.48
8.1.190.0000.00917.35
8.1.180.0080.00018.10
8.1.170.0080.00018.77
8.1.160.0000.00718.91
8.1.150.0030.00618.68
8.1.140.0000.00817.45
8.1.130.0030.00318.98
8.1.120.0040.00417.45
8.1.110.0000.00717.38
8.1.100.0000.00717.56
8.1.90.0030.00617.47
8.1.80.0030.00517.55
8.1.70.0050.00317.59
8.1.60.0000.00717.71
8.1.50.0020.00517.63
8.1.40.0040.00417.43
8.1.30.0000.00817.75
8.1.20.0070.00017.63
8.1.10.0050.00817.07
8.1.00.0060.00317.59
8.0.300.0000.00818.77
8.0.290.0040.00417.18
8.0.280.0040.00418.51
8.0.270.0000.00716.82
8.0.260.0060.00018.53
8.0.250.0070.00017.00
8.0.240.0060.00317.11
8.0.230.0040.00416.91
8.0.220.0030.00616.81
8.0.210.0060.00416.66
8.0.200.0110.00316.21
8.0.190.0070.00616.89
8.0.180.0120.00416.84
8.0.170.0070.00816.63
8.0.160.0130.00016.69
8.0.150.0050.00516.39
8.0.140.0090.00516.61
8.0.130.0090.00616.21
8.0.120.0120.00016.39
8.0.110.0100.00316.63
8.0.100.0070.00816.68
8.0.90.0130.00016.46
8.0.80.0100.00216.65
8.0.70.0130.00016.71
8.0.60.0090.00616.33
8.0.50.0040.00916.54
8.0.30.0110.00316.53
8.0.20.0120.00416.41
8.0.10.0060.00916.72
7.4.330.0070.00015.55
7.4.320.0070.00016.48
7.4.300.0120.00516.52
7.4.290.0090.00316.37
7.4.280.0050.01116.09
7.4.270.0120.00316.47
7.4.260.0170.00016.67
7.4.250.0130.00016.52
7.4.240.0050.00916.39
7.4.230.0080.00816.26
7.4.220.0070.00216.34
7.4.210.0110.00416.13
7.4.200.0050.01016.62
7.4.190.0130.00316.48
7.4.180.0100.00316.47
7.4.160.0060.01016.26
7.4.150.0090.00216.39
7.4.140.0030.00916.34
7.4.130.0110.00316.08
7.4.120.0130.00015.80
7.4.110.0060.00616.24
7.4.100.0090.00016.34
7.4.90.0070.00415.76
7.4.80.0050.00516.27
7.4.70.0100.00016.44
7.4.60.0080.00616.16
7.4.50.0100.00316.34
7.4.40.0130.00016.34
7.4.30.0080.00416.01
7.4.20.0050.00616.14
7.4.10.0090.00316.24
7.4.00.0130.00016.25

preferences:
29.64 ms | 403 KiB | 5 Q