Short circuit operators always evaluate in boolean context. In boolean context there are only true and false. The string "0" and numberic 0 are, among others, false. But, 0 (or empty string) is defined. So you need to check for defined-ness to allow them. See True or False? A Quick Reference Guide.
Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!
Comment on Re^3: How to assign string "0" in short circuit