Note that empty() will return false on null byte. Eg.
<?php
// Save to variable, so it works on older PHP versions
$null_byte = chr(0); // === \0
var_dump(
empty(null),
empty($null_byte)
);
/**
* Results:
*
* bool(true)
* bool(false)
*/