Last active
October 3, 2022 21:22
-
-
Save cdtweb/d83acc70cce1b5847bc0194d391c3ad0 to your computer and use it in GitHub Desktop.
PHP Data Type Check
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// data to be tested | |
$data = [ | |
null, | |
false, | |
true, | |
0, | |
1, | |
'', | |
'hello', | |
array(), | |
array(1, 2, 3), | |
new \stdClass, | |
function () { | |
return true; | |
} | |
]; | |
foreach ($data as $value) { | |
// format name for value being tested | |
if (is_string($value)) { | |
$valueName = '"' . $value . '"'; | |
} elseif (is_bool($value)) { | |
$valueName = ($value) ? 'true' : 'false'; | |
} elseif (is_null($value)) { | |
$valueName = 'NULL'; | |
} elseif (is_array($value)) { | |
$valueName = 'Array(' . count($value) . ')'; | |
} elseif (is_object($value)) { | |
if ($value instanceof \Closure) { | |
$valueName = 'Closure'; | |
} else { | |
$valueName = 'Object'; | |
} | |
} else { | |
$valueName = $value; | |
} | |
// run the tests | |
if ($value == false) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is false (loosely typed)' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not false (loosely typed)' . PHP_EOL; | |
} | |
if ($value === false) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is false (strictly typed)' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not false (strictly typed)' . PHP_EOL; | |
} | |
if ($value == true) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is true (loosely typed)' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not true (loosely typed)' . PHP_EOL; | |
} | |
if ($value === true) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is true (strictly typed)' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not true (strictly typed)' . PHP_EOL; | |
} | |
if (empty($value)) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is empty' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not empty' . PHP_EOL; | |
} | |
if ($value == null) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is null (loosely typed)' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not null (loosely typed)' . PHP_EOL; | |
} | |
if (is_null($value)) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is null (strictly typed)' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not null (strictly typed)' . PHP_EOL; | |
} | |
if (is_countable($value)) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is countable' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not countable' . PHP_EOL; | |
} | |
if (isset($value)) { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is set' . PHP_EOL; | |
} else { | |
echo $valueName . ' (typeof ' . strtolower(gettype($value)) . ') is not set' . PHP_EOL; | |
} | |
// line separation between tests | |
echo PHP_EOL; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment