Skip to content

Instantly share code, notes, and snippets.

@renepardon
Created November 21, 2018 08:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save renepardon/7a01ada14da731ce69e1d2e9208fa7a3 to your computer and use it in GitHub Desktop.
Save renepardon/7a01ada14da731ce69e1d2e9208fa7a3 to your computer and use it in GitHub Desktop.
PHP in_array() strange results for different types
<?php
// PHP 7.2.10
$value = "test";
var_dump(
$value,
in_array($value, [1]),
in_array($value, [true]),
in_array($value, ['true']),
in_array($value, [1, true, 'true']),
in_array($value, [0, false, 'false']),
in_array($value, ['test'])
);
/* Output:
string(4) "test"
bool(false)
bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
*/
/* Expected Output:
string(4) "test"
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
*/
var_dump(in_array(null, [0, "0", false, 'false']));
// Output: bool(true)
// Expected Output: bool(false)
// ### Solution: set 3rd parameter to "true" - strict checking. Funny, isn't it? NOOOOOOOHOOOOO! ###
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment