Предупреждения, это рекомендации, и если я знаю, что они не влияют на исполнения кода, а тем более не приведут к фатальной ошибке, то я кивну и скажу спасибо. Но не более этого.
А вот ошибка, это уже невозможность работы кода далее, хотя можно ее и "засобачить".
Для начинающих обязательно нужно выводить и предупреждения и ошибки, а тем кто знает о чем это, можно отключить. А в РНР можно отключать только предупреждения, выводя только ошибки во время отладки.
Правило хорошего тона - вывод ошибок только во время отладки, на сервере их обязательно отключать, и не только РНР, но SQL, определяя их вывод в лог-файл.
Зная кое что и о поведении языка той или иной версии, можно даже заглушить вывод ошибки. Например, в новых версиях полученный массив размыкается и можно сразу работать с его элементами, что к примеру в JS легко делается. В старых версиях РНР этого нельзя сделать, только через предварительное объявления переменной. Это вроде бы мелочь, но она не позволяет обойтись одним лаконичным выражением в условии. Но все же, если знать поведение языка, то и в старых версиях при работе с массивами вполне можно поставить и заглушку.
А насчет правильно ли или нет, ну так это вообще "баг" - в РНР (и не только) предупреждение и ошибка, это все таки понятия разные.
А мануал я знаю.
