3v4l.org

run code in 300+ PHP versions simultaneously
<?php function test($array) { try { return is_associative_array($array); } catch (Exception $e) { echo $e->getMessage(); return 'error'; } } function is_associative_array($array) { // your fav method here } //// non-array - adjust according to your preferred error handling technique //assert(test(null)); //assert(test('')); //assert(test(0)); //assert(test(false)); //assert(test(new stdClass)); // other assert(test([]) === true); // empty array assert(test([null, 1, 2]) === false); // to catch wrong isset usage as in some answers assert(test(['' => '']) === true); // random test assert(test([0 => '']) === false); // random test assert(test([1 => 'a']) === true); // random test // numeric keys assert(test(['', 'a', 'b']) === false); // proper indexed array assert(test([1 => 'a', 2 => 'b', 3 => 'c']) === true); // sequential but not 0-based assert(test([-1 => '', 0 => '', 1 => 'a']) === true); // sequential but not 0-based assert(test([0 => '', 2 => 'b', 3 => 'c']) === true); // 1 index missing assert(test([0 => '', 2 => 'b', 1 => 'a']) === true); // numeric but unordered // string keys assert(test(['' => '', 'a' => 'a', 'b' => 'b']) === true); // proper dictionary // mixed keys assert(test(['' => '', 1 => 'a', 2 => 'b']) === true); // first key string but rest not; also, associative even though '' == 0 assert(test([0 => '', 1 => 'a', 'b' => 'b']) === true); // first key numeric but rest not // numeric string keys assert(test([' 0' => '']) === true); // associative even though ' 0' == 0 assert(test(['00' => '']) === true); // associative even though '00' == 0 assert(test(['0*' => '']) === true); // associative even though '0*' == 0 assert(test(['0.0' => '']) === true); // associative even though '0.0' == 0.0 assert(test(['0x0' => '']) === true); // associative even though '0x0' == 0 assert(test(['0e0' => '']) === true); // associative even though '0e0' == 0

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.0110.00716.75
8.3.50.0110.00418.03
8.3.40.0060.00918.98
8.3.30.0090.00618.58
8.3.20.0040.00420.33
8.3.10.0110.00421.76
8.3.00.0040.00419.38
8.2.180.0120.00318.66
8.2.170.0180.00422.96
8.2.160.0120.00320.46
8.2.150.0080.00024.18
8.2.140.0050.00324.66
8.2.130.0080.00317.50
8.2.120.0040.00426.35
8.2.110.0030.00619.30
8.2.100.0040.00817.80
8.2.90.0000.00919.24
8.2.80.0050.00317.97
8.2.70.0000.01117.49
8.2.60.0030.00617.80
8.2.50.0060.00318.07
8.2.40.0070.00019.41
8.2.30.0040.00420.61
8.2.20.0000.00917.75
8.2.10.0040.00418.02
8.2.00.0030.00517.95
8.1.280.0120.00625.92
8.1.270.0060.00323.96
8.1.260.0000.00828.09
8.1.250.0000.00828.09
8.1.240.0030.00619.09
8.1.230.0000.01117.53
8.1.220.0040.00417.74
8.1.210.0000.00818.77
8.1.200.0030.00617.25
8.1.190.0000.00717.70
8.1.180.0040.00418.10
8.1.170.0050.00318.34
8.1.160.0030.00522.04
8.1.150.0000.00718.67
8.1.140.0090.00019.48
8.1.130.0000.00717.55
8.1.120.0070.00017.24
8.1.110.0040.00417.40
8.1.100.0000.00817.36
8.1.90.0030.00417.36
8.1.80.0090.00017.35
8.1.70.0040.00417.21
8.1.60.0050.00317.46
8.1.50.0000.00817.39
8.1.40.0000.01117.46
8.1.30.0000.00917.54
8.1.20.0000.00817.55
8.1.10.0050.00317.54
8.1.00.0040.00717.36
8.0.300.0040.00418.77
8.0.290.0050.00216.63
8.0.280.0030.00518.33
8.0.270.0070.00017.28
8.0.260.0000.00717.11
8.0.250.0030.00317.04
8.0.240.0030.00517.01
8.0.230.0050.00216.86
8.0.220.0100.00016.93
8.0.210.0030.00316.93
8.0.200.0030.00316.96
8.0.190.0030.00516.95
8.0.180.0040.00416.81
8.0.170.0000.00817.01
8.0.160.0000.00717.00
8.0.150.0020.00516.78
8.0.140.0000.00716.75
8.0.130.0070.00013.32
8.0.120.0030.00716.83
8.0.110.0040.00416.89
8.0.100.0000.00816.91
8.0.90.0000.00716.86
8.0.80.0060.01116.99
8.0.70.0000.00816.83
8.0.60.0040.00416.91
8.0.50.0030.00517.04
8.0.30.0080.01017.20
8.0.20.0140.00517.40
8.0.10.0040.00416.93
8.0.00.0130.00616.65
7.4.330.0030.00316.84
7.4.320.0030.00316.61
7.4.300.0000.00616.59
7.4.290.0000.00716.59
7.4.280.0050.00216.59
7.4.270.0050.00316.53
7.4.260.0080.00016.47
7.4.250.0000.00716.36
7.4.240.0050.00316.43
7.4.230.0000.00716.59
7.4.220.0070.01116.62
7.4.210.0070.01416.67
7.4.200.0040.00416.65
7.4.160.0060.01116.59
7.4.150.0140.00317.40
7.4.140.0110.00817.86
7.4.130.0100.01016.54
7.4.120.0050.01616.61
7.4.110.0110.00716.67
7.4.100.0140.01216.48
7.4.90.0110.00616.55
7.4.80.0090.01519.39
7.4.70.0060.01216.45
7.4.60.0060.01116.50
7.4.50.0080.00816.45
7.4.40.0090.00616.50
7.4.30.0080.01016.69
7.4.00.0080.00815.25
7.3.330.0000.00613.38
7.3.320.0000.00513.37
7.3.310.0030.00416.39
7.3.300.0000.00716.45
7.3.290.0100.00916.35
7.3.280.0080.00816.43
7.3.270.0070.01317.40
7.3.260.0120.00916.62
7.3.250.0050.01316.42
7.3.240.0110.01116.38
7.3.230.0120.00616.39
7.3.210.0150.00416.37
7.3.200.0150.00716.54
7.3.190.0140.00316.41
7.3.180.0100.00716.52
7.3.170.0030.01216.72
7.3.160.0100.00916.34
7.3.120.0100.01015.11
7.3.110.0100.00715.01
7.3.100.0070.00714.68
7.3.90.0030.01314.68
7.3.80.0100.00714.68
7.3.70.0060.00614.66
7.3.60.0090.00614.70
7.3.50.0040.00814.89
7.3.40.0080.00814.74
7.3.30.0040.01114.71
7.3.20.0030.01416.46
7.3.10.0130.00816.54
7.3.00.0090.00816.55
7.2.330.0190.00816.52
7.2.320.0110.00516.40
7.2.310.0120.00416.30
7.2.300.0000.01616.50
7.2.290.0060.01616.68
7.2.250.0030.01414.62
7.2.240.0070.01314.48
7.2.230.0030.00915.26
7.2.220.0070.00715.07
7.2.210.0120.00415.04
7.2.200.0060.00314.91
7.2.190.0000.01815.06
7.2.180.0030.01015.03
7.2.170.0040.00414.93
7.2.130.0130.00916.36
7.2.120.0130.01016.14
7.2.110.0070.01316.45
7.2.100.0100.01116.11
7.2.90.0100.00716.36
7.2.80.0240.00716.16
7.2.70.0150.00916.25
7.2.60.0120.00816.56
7.2.50.0130.00916.40
7.2.40.0190.00916.08
7.2.30.0090.00916.27
7.2.20.0140.01116.51
7.2.10.0070.01116.50
7.2.00.0070.01117.86
7.1.330.0100.00315.72
7.1.320.0040.01215.69
7.1.310.0110.00415.70
7.1.300.0030.01015.84
7.1.290.0110.00415.69
7.1.280.0070.00715.71
7.1.270.0040.00415.38
7.1.260.0090.00415.76
7.1.250.0090.00315.68
7.1.200.0060.00615.77
7.1.100.0070.00317.80
7.1.70.0030.01017.13
7.1.60.0030.02119.36
7.1.50.0040.00717.05
7.1.00.0000.08022.48
7.0.200.0000.00816.57
7.0.60.0070.07720.07
7.0.50.0030.05717.93
7.0.40.0030.05720.23
7.0.30.0370.08320.08
7.0.20.0370.07020.24
7.0.10.0030.06020.22
7.0.00.0070.06020.23
5.6.280.0070.05321.04
5.6.210.0130.05020.54
5.6.200.0030.08018.18
5.6.190.0130.08020.50
5.6.180.0570.07020.48
5.6.170.0270.07020.45
5.6.160.0030.04320.54
5.6.150.0100.08018.14
5.6.140.0070.04018.18
5.6.130.0170.07718.15
5.6.120.0200.06721.03
5.6.110.0130.06020.99
5.6.100.0030.04021.00
5.6.90.0100.03721.00
5.6.80.0130.07320.55
5.5.350.0070.03720.55
5.5.340.0030.06717.99
5.5.330.0200.07020.29
5.5.320.0100.08020.27
5.5.310.0370.07020.39
5.5.300.0170.07318.08
5.5.290.0130.04717.95
5.5.280.0030.04020.89
5.5.270.0100.07720.87
5.5.260.0030.05720.89
5.5.250.0100.08320.59
5.5.240.0070.08720.06

preferences:
41.45 ms | 400 KiB | 5 Q