3v4l.org

run code in 300+ PHP versions simultaneously
<?php function mergeAttachments(array $a, array $b) { // If both #attached arrays contain drupalSettings, then merge them // correctly; adding the same settings multiple times needs to behave // idempotently. if (!empty($b['drupalSettings'])) { $temp = mergeDeepArray([$a['drupalSettings'], $b['drupalSettings']], TRUE); } $a = mergeDeepArray([$a, $b]); if (isset($temp)) { $a['drupalSettings'] = $temp; } return $a; } function mergeAttachmentsOld(array $a, array($b)) { if (!empty($a['drupalSettings']) && !empty($b['drupalSettings'])) { $a['drupalSettings'] = mergeDeepArray([$a['drupalSettings'], $b['drupalSettings']], TRUE); unset($b['drupalSettings']); } return mergeDeep($a, $b); } function mergeDeepArray(array $arrays, $preserve_integer_keys = FALSE) { $result = array(); foreach ($arrays as $array) { foreach ($array as $key => $value) { // Renumber integer keys as array_merge_recursive() does unless // $preserve_integer_keys is set to TRUE. Note that PHP automatically // converts array keys that are integer strings (e.g., '1') to integers. if (is_integer($key) && !$preserve_integer_keys) { $result[] = $value; } // Recurse when both values are arrays. elseif (isset($result[$key]) && is_array($result[$key]) && is_array($value)) { $result[$key] = mergeDeepArray(array($result[$key], $value), $preserve_integer_keys); } // Otherwise, use the latter value, overriding any previous value. else { $result[$key] = $value; } } } return $result; } function mergeDeep() { return mergeDeepArray(func_get_args()); } for($i = 0; $i <= 1000; $i++) { $a['#attached'] = array( 'library' => array( 'core/drupal', 'core/drupalSettings', ), ); $b['#attached'] = array( 'library' => array( 'core/jquery', ), ); mergeAttachments($a['#attached'], $b['#attached']); }

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.6.80.0070.08320.54
5.5.240.0000.08020.27
5.4.400.1200.05719.08
5.4.390.0230.05018.47
5.4.380.0070.06318.56
5.4.370.0230.06018.70
5.4.360.0200.05718.77
5.4.350.0200.05718.56
5.4.340.0200.05318.78
5.4.320.0330.05318.77
5.4.310.0170.05318.80
5.4.300.0170.05318.59
5.4.290.0200.07018.70
5.4.280.0270.05318.61
5.4.270.0270.05018.42
5.4.260.0130.06318.70
5.4.250.0330.04718.82
5.4.240.0200.05318.73
5.4.230.0200.05018.55
5.4.220.0200.05018.81
5.4.210.0170.06018.72
5.4.200.0170.05016.59
5.4.190.0070.08318.59
5.4.180.0130.05718.57
5.4.170.0170.05718.46
5.4.160.0170.05318.75
5.4.150.0230.04718.75
5.4.140.0230.04716.19
5.4.130.0200.04716.28
5.4.120.0170.05016.22
5.4.110.0230.04316.19
5.4.100.0170.05316.29
5.4.90.0100.06316.29
5.4.80.0200.04716.23
5.4.70.0200.05016.34
5.4.60.0230.04316.16
5.4.50.0270.04316.28
5.4.40.0170.05716.36
5.4.30.0270.05016.26
5.4.20.0130.05316.26
5.4.10.0200.05016.29
5.4.00.0200.04315.75
5.3.290.0300.06014.76
5.3.280.0070.06314.62
5.3.270.0170.05314.63
5.3.260.0030.06714.82
5.3.250.0170.05714.70
5.3.240.0170.05314.66
5.3.230.0130.05714.81
5.3.220.0270.05014.66
5.3.210.0200.07714.77
5.3.200.0300.06314.77
5.3.190.0100.08314.79
5.3.180.0230.05014.62
5.3.170.0230.06714.59
5.3.160.0300.06014.76
5.3.150.0100.06014.62
5.3.140.0130.05714.61
5.3.130.0070.06314.53
5.3.120.0230.06714.56
5.3.110.0270.06314.75
5.3.100.0200.06714.06
5.3.90.0170.07014.08
5.3.80.0170.06714.04
5.3.70.0230.06014.04
5.3.60.0270.05314.04
5.3.50.0130.07014.10
5.3.40.0230.06014.14
5.3.30.0200.06313.91
5.3.20.0270.05713.70
5.3.10.0130.05013.77
5.3.00.0170.05013.69
5.2.170.0100.04311.16
5.2.160.0130.05711.16
5.2.150.0070.04711.22
5.2.140.0130.04011.13
5.2.130.0130.03711.12
5.2.120.0100.04311.18
5.2.110.0300.03711.12
5.2.100.0130.04011.11
5.2.90.0230.04711.09
5.2.80.0300.04011.09
5.2.70.0100.05711.09
5.2.60.0230.03311.10
5.2.50.0100.04311.23
5.2.40.0170.03711.07
5.2.30.0030.04711.05
5.2.20.0070.04310.98
5.2.10.0070.04310.87
5.2.00.0170.03710.84
5.1.60.0130.0309.99
5.1.50.0030.04310.21
5.1.40.0100.03310.04
5.1.30.0200.02710.38
5.1.20.0130.03710.55
5.1.10.0070.04010.27
5.1.00.0030.04310.19
5.0.50.0070.0308.57
5.0.40.0000.0338.43
5.0.30.0100.0538.28
5.0.20.0100.0338.20
5.0.10.0000.0338.16
5.0.00.0070.0438.17
4.4.90.0030.0235.98
4.4.80.0070.0235.91
4.4.70.0070.0275.86
4.4.60.0130.0235.93
4.4.50.0130.0235.98
4.4.40.0130.0375.89
4.4.30.0070.0305.89
4.4.20.0130.0306.02
4.4.10.0030.0405.96
4.4.00.0100.0335.91
4.3.110.0030.0235.86
4.3.100.0100.0175.84
4.3.90.0130.0205.88
4.3.80.0170.0305.84
4.3.70.0070.0205.81
4.3.60.0070.0205.83
4.3.50.0030.0235.82
4.3.40.0130.0375.87
4.3.30.0100.0174.66
4.3.20.0000.0274.66
4.3.10.0030.0304.51
4.3.00.0000.01314.42

preferences:
143.33 ms | 1394 KiB | 7 Q