3v4l.org

run code in 300+ PHP versions simultaneously
<?php if (!function_exists('str_contains')) { function str_contains(string $haystack, string $needle): bool { return '' === $needle || false !== strpos($haystack, $needle); } } if (!function_exists('str_ends_with')) { function str_ends_with(string $haystack, string $needle): bool { return '' === $needle || ('' !== $haystack && 0 === \substr_compare($haystack, $needle, -\strlen($needle))); } } if (!function_exists('str_starts_with')) { function str_starts_with(string $haystack, string $needle): bool { return 0 === \strncmp($haystack, $needle, \strlen($needle)); } } $methods = [ 'str_contains', 'str_starts_with', 'str_ends_with', ]; $types = [ 'string' => 'test', 'int' => 1, 'float' => 1.23, 'null' => null, 'true' => true, 'false' => false, 'object' => new StdClass(), 'array' => [], ]; $result = []; foreach ($methods as $method) { foreach ($types as $type => $val) { foreach (['first' => [$val, 'test'], 'second' => ['test', $val]] as $firstSecond => $args) { try { $res = $method(...$args); } catch (Error $e) { $res = 'Fatal error triggered'; } $result[$method][$type][$firstSecond] = $res; } } } var_export($result);
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
Deprecated: str_contains(): Passing null to parameter #1 ($haystack) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_contains(): Passing null to parameter #2 ($needle) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_starts_with(): Passing null to parameter #1 ($haystack) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_starts_with(): Passing null to parameter #2 ($needle) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_ends_with(): Passing null to parameter #1 ($haystack) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_ends_with(): Passing null to parameter #2 ($needle) of type string is deprecated in /in/m8OIn on line 53 array ( 'str_contains' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_starts_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_ends_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Deprecated: str_contains(): Passing null to parameter #1 ($haystack) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_contains(): Passing null to parameter #2 ($needle) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_starts_with(): Passing null to parameter #1 ($haystack) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_starts_with(): Passing null to parameter #2 ($needle) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_ends_with(): Passing null to parameter #1 ($haystack) of type string is deprecated in /in/m8OIn on line 53 Deprecated: str_ends_with(): Passing null to parameter #2 ($needle) of type string is deprecated in /in/m8OIn on line 53 array ( 'str_contains' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_starts_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_ends_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), )
Output for 8.0.0 - 8.0.30
array ( 'str_contains' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_starts_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_ends_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => false, 'second' => true, ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), )
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
array ( 'str_contains' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_starts_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), 'str_ends_with' => array ( 'string' => array ( 'first' => true, 'second' => true, ), 'int' => array ( 'first' => false, 'second' => false, ), 'float' => array ( 'first' => false, 'second' => false, ), 'null' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'true' => array ( 'first' => false, 'second' => false, ), 'false' => array ( 'first' => false, 'second' => true, ), 'object' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), 'array' => array ( 'first' => 'Fatal error triggered', 'second' => 'Fatal error triggered', ), ), )

preferences:
157.8 ms | 410 KiB | 182 Q