PHP странно себя ведёт при сравнение нуля и &quot;*&quot;
Дык приведение же типов. Правый аргумент приводится к типу левого аргумента. Т.е. '*' приводится к 0, соответственно становится 0.
И это не только со *, а с чем попало не цифровым. Попробуйте a, b, + и т.д.
можно попробовать 
$a = *;
if ($a == strval(0))
Вообще я за типизацию переменных. В 5.4 уже начали это делать. Очень жду.