I can't use empty() in all situations because '0' is usually not considered empty to me. I did a quick benchmark over the most common ways of testing it. '' == var suffers from '' == 0 is true so that's just there for curiosity.
<?php
$microtimeref = microtime(true);
$a = 0;
$b = 'asd';
for ($i = 0; $i < 5000000; $i++)
{
if (0 == mb_strlen ($b))
{
$a++;
}
}
echo "Total time 0 == mb_strlen(var): <b>" . round(microtime(true) - $microtimeref,3) . 's</b><br />';
?>
The results:
Total time 0 == mb_strlen(var): 3.141s
Total time 0 === strlen(var): 2.904s
Total time 0 == strlen(var): 2.878s
Total time '' == var: 1.774s
Total time '' === var: 1.706s
Total time empty(var): 1.496s
Thus '' === var will be my zero length string test.