3v4l.org

run code in 300+ PHP versions simultaneously
<?php function translitUa($str) { $array = [ //'&'=>'ta', //'%'=>'', //'\''=>'', 'Зг'=>'Zgh', 'зг'=>'zgh', 'А'=>'A','а'=>'a', 'Б'=>'B','б'=>'b', 'В'=>'V','в'=>'v', 'Г'=>'H','г'=>'h', 'Ґ'=>'G','ґ'=>'g', 'Д'=>'D','д'=>'d', 'Е'=>'E','е'=>'e', 'Є'=>'Ye','є'=>'ie', 'Ж'=>'Zh','ж'=>'zh', 'З'=>'Z','з'=>'z', 'И'=>'Y','и'=>'y', 'І'=>'I','і'=>'i', 'Ї'=>'Yi','ї'=>'i', 'Й'=>'Y','й'=>'i', 'К'=>'K','к'=>'k', 'Л'=>'L','л'=>'l', 'М'=>'M','м'=>'m', 'Н'=>'N','н'=>'n', 'О'=>'O','о'=>'o', 'П'=>'P','п'=>'p', 'Р'=>'R','р'=>'r', 'С'=>'S','с'=>'s', 'Т'=>'T','т'=>'t', 'У'=>'U','у'=>'u', 'Ф'=>'F','ф'=>'f', 'Х'=>'Kh','х'=>'kh', 'Ц'=>'Ts','ц'=>'ts', 'Ч'=>'Ch','ч'=>'ch', 'Ш'=>'Sh','ш'=>'sh', 'Щ'=>'Shch','щ'=>'shch', 'Ь'=>'','ь'=>'', 'Ю'=>'Yu','ю'=>'iu', 'Я'=>'Ya','я'=>'ia' ]; return strtr($str,$array); } function wordcombos($words) { if ( count($words) <= 1 ) { $result = $words; } else { $result = array(); for ( $i = 0; $i < count($words); ++$i ) { $firstword = $words[$i]; $remainingwords = array(); for ( $j = 0; $j < count($words); ++$j ) { if ( $i <> $j ) $remainingwords[] = $words[$j]; } $combos = wordcombos($remainingwords); for ( $j = 0; $j < count($combos); ++$j ) { $result[] = $firstword . ' ' . $combos[$j]; } } } return $result; } function wordsArray($words, $data, $array = []) { if ($words === []) { return $array; } $word = array_shift($words); $subArray = wordsArray($words, $data, $array); if ($subArray === []) { $array[metaphone(translitUa($word))]['@data'] = $data; } else { $array[metaphone(translitUa($word))] = $subArray; } return $array; } $matches = [ 'розклад маршруток київ' => 'ось розклад маршруток київ', 'розклад автобусів київ' => 'ось розклад маршруток київ', 'розклад маршруток клавдієво' => 'ось розклад маршруток клавдієво', 'розклад автобусів клавдієво' => 'ось розклад маршруток клавдієво', 'розклад маршруток макарів' => 'ось розклад маршруток макарів', 'розклад автобусів макарів' => 'ось розклад маршруток макарів', 'розклад макарів' => 'ось розклад маршруток макарів', 'розклад електричок київ' => 'ось розклад електричок київ', 'розклад електричок' => 'ось розклад електричок київ', 'розклад електричок святошин' => 'ось розклад електричок київ', ]; function generateArray($matches) { $array = []; foreach ($matches as $keywords => $match) { $keywordsArray = explode(' ', $keywords); $combinations = wordcombos($keywordsArray); foreach ($combinations as $combination) { $words = explode(' ', $combination); $array = array_merge_recursive($array, wordsArray($words, $match)); } } return $array; } $array = generateArray($matches); function search($query, $array) { $query = str_replace([',', '.', ';', '-', '!', '?', "\r\n", "\n"], ' ', $query); $queryWords = explode(' ', $query); foreach ($queryWords as $word) { $wordMeta = metaphone(translitUa($word)); foreach ($array as $key => $value) { if (levenshtein($wordMeta, $key) < 2) { $array = $array[$key]; //var_dump($word . ' - ' . $wordMeta, $array); break; } } } if (isset($array['@data'])) { var_dump($array['@data']); } } search('Ну Це хоч по ділу.. а не 200 повідомлень дайте розклад електричок чи маршрутки', $array);

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.3.60.0150.00618.43
8.3.50.0110.00420.10
8.3.40.0160.00620.26
8.3.30.0060.00918.77
8.3.20.0050.00324.18
8.3.10.0040.00424.66
8.3.00.0040.00426.16
8.2.180.0110.01125.92
8.2.170.0120.00319.06
8.2.160.0160.00322.96
8.2.150.0080.00025.66
8.2.140.0000.00824.66
8.2.130.0070.00026.16
8.2.120.0030.00626.16
8.2.110.0030.00622.16
8.2.100.0120.00018.03
8.2.90.0080.00019.36
8.2.80.0000.00817.97
8.2.70.0050.00917.50
8.2.60.0040.00417.93
8.2.50.0030.00618.07
8.2.40.0000.00818.25
8.2.30.0090.00018.25
8.2.20.0040.00420.58
8.2.10.0000.00918.14
8.2.00.0040.00419.27
8.1.280.0140.00725.92
8.1.270.0000.00824.66
8.1.260.0040.00426.35
8.1.250.0090.01328.09
8.1.240.0030.00621.37
8.1.230.0120.00017.52
8.1.220.0000.00817.89
8.1.210.0060.00318.77
8.1.200.0050.00517.60
8.1.190.0070.00317.48
8.1.180.0040.00418.10
8.1.170.0030.00618.68
8.1.160.0030.00518.88
8.1.150.0000.00818.67
8.1.140.0000.00817.52
8.1.130.0040.00420.11
8.1.120.0090.00918.65
8.1.110.0140.00518.77
8.1.100.0100.00718.88
8.1.90.0090.00918.69
8.1.80.0130.00418.80
8.1.70.0140.00318.77
8.1.60.0160.00318.91
8.1.50.0150.00418.84
8.1.40.0160.00418.91
8.1.30.0200.00018.92
8.1.20.0170.00318.90
8.1.10.0160.00518.85
8.1.00.0060.00318.70
8.0.300.0040.00418.77
8.0.290.0000.00816.75
8.0.280.0000.00818.60
8.0.270.0000.00717.25
8.0.260.0150.00018.03
8.0.250.0070.00718.18
8.0.240.0120.00318.21
8.0.230.0070.00718.12
8.0.220.0090.00718.11
8.0.210.0130.00318.03
8.0.200.0120.00218.20
8.0.190.0100.00518.18
8.0.180.0060.00918.19
8.0.170.0120.00318.02
8.0.160.0090.00618.07
8.0.150.0120.00217.91
8.0.140.0050.01018.03
8.0.130.0100.00518.05
8.0.120.0140.00218.05
8.0.110.0120.00317.98
8.0.100.0160.00018.10
8.0.90.0000.01718.05
8.0.80.0080.00817.96
8.0.70.0150.00017.98
8.0.60.0050.01018.06
8.0.50.0120.00317.98
8.0.30.0060.00918.08
8.0.20.0050.00918.05
8.0.10.0120.00318.23
7.4.330.0110.00315.57
7.4.320.0140.00217.71
7.4.300.0040.01217.69
7.4.290.0100.00517.65
7.4.280.0140.00417.78
7.4.270.0120.00417.57
7.4.260.0060.01317.64
7.4.250.0060.01017.68
7.4.240.0140.00217.73
7.4.230.0150.00017.70
7.4.220.0100.00517.67
7.4.210.0040.00917.55
7.4.200.0100.00317.60
7.4.190.0100.00517.81
7.4.180.0080.00417.97
7.4.160.0060.00317.66
7.4.150.0020.00717.77
7.4.140.0060.00617.55
7.4.130.0040.00417.54
7.4.120.0000.01317.50
7.4.110.0070.00417.77
7.4.100.0130.00017.78
7.4.90.0070.00717.54
7.4.80.0110.00417.71
7.4.70.0000.01517.66
7.4.60.0000.01317.54
7.4.50.0000.01317.53
7.4.40.0100.00517.48
7.4.30.0110.00417.65
7.4.20.0110.00317.60
7.4.10.0080.00617.67
7.4.00.0050.00917.53

preferences:
55.61 ms | 400 KiB | 5 Q