Даю выписку из Вашего "Type Juggling":
Для целых чисел 0 (ноль) вычисляеться как False, а любое ненулевое целое значение как True. Анологично действительное значение 0,0 (или такие его эквиваленты 0,000) вычисляются как False, а ненулевые значения вычисляются как True. Что касаеться строк, то пустая строка вычисляеться как False, она представляеться парой кавычек между которыми ничего нет. Все непустые строки вычисляються как True.
В даном случае мы получаем True.
Поставте в начале $i=1;
А еще сравнение сделайте if ( $i == \'1\' )
Вот Вам integer и string
Поэксперементируйте с вариантами $i= "0"; TRUE; FALSE;
Я соглашусь со всем, но то что 0 дает ИСТИНУ НИКОГДА