PHP — язык программирования для веба. Позволяет писать как в императивный код, так и объектно-ориентирова<wbr />нный.
Императивный стиль написания программы проще, так как более интуитивный. Объектно-ориентирова<wbr />нный подход требует предварительного освоения, понимания концепций, не являющихся интуитивно понятными.
Впрочем, не только PHP позволяет писать код в нескольких парадигмах, и даже смешивать их в одной программе.
У PHP хорошая справка, где расписана каждая функция. Причём есть вариант и на русском языке. При этом язык развивался очень долго силами сообщества, поэтому у различных фукнций может различаться формат задания аргументов. Это неудобно и обычно порождает у новичков вопросы. В этих случая лучше не докапываться до глубинного смысла, потому что его нет. Просто один человек так сделал, а другой по-своему.
PHP позволяет много вольностей в коде. Кому-то это нравится, а кому-то набивает шишки на лбу. Многие ругают PHP за это. Но в итоге именно программист несёт ответственность ( или не несёт ) за свой код. Зачастую выходит так, что чужие программы, написанные на PHP, очень трудно понять. И тогда простота языка делает его наоборот очень сложным.
Дело в примере далеко не в foreach. Здесь имеет место тяжёлый случай для языков программирования, в которых тип данных для переменной не определяется строго, к которым и относится PHP. Попробуйте заменить первый элемент массива на любое другое число - и этого "глюка" уже не будет.
Проблема в том, что интерпертатор PHP пытается сам подобрать подходящий для сравнения тип данных у переменной $value. Думаю, его логика такая, что он считает $value логической переменной (Boolean), в результате 0 превращается в FALSE. Но на другой стороне сравнения стоит одна буковка (Char), в результате чего FALSE преобразуется до F.
Чтобы избавиться от этого "глюка", можно использовать такие варианты:
- Явно указать тип переменной $value в сравнении.
- Использовать строгую проверку, чтобы PHP не приводил сравниваемые данные к наиболее подходящему типу.
Язык хорошо работает с математическими вычислениями, поэтому его начали активно использовать в Machine Learning и AI.
Это в профессиональной среде, а для новичков язык хорош тем, что учится легче, чем Java и другие ООП-ориентированные языки программирования. С Python легче стартовать в программировании.
Но на мой взгляд, в нем не хватает скобочек :) Но это уж сугубо личное мнение.
Так как РНР - предназначен в основном для интернета. До сих пор в РНР использовали скрипты - (небольшие программные включения) - но Интернет развивается. И уже его проблемы или запросы сложно обеспечить небольшими скриптами.
Если Вы уже владеете каким-нибудь языком программирования, то: Придумайте какой-нибуть проект. Распишите по пунктам все задачи, которые нужно реализовать в нем, составьте алгоритмы и ищите по справочникам и в сети способы их реализации. Весь синтаксис и командные слова усвоите по ходу. Это пожалуй наилучший способ.
Если же это первый язык, который Вы решили изучать, то начните с изучения синтаксиса и команд. (Но в таком случае, лучше заняться изучением С, C# или С++ - в РНР синтаксис подобен синтаксису С). Потом переходите к простеньким примерам, которые есть в каждом учебнике. После того, как навскидку сможете ответить, как реализовать тот или иной алгоритм (например, отсортировать по возрастанию элементы массива, вывести те или иные слова и/или предложения и т.п.), сдлайте задание посложней, вывести несколько страниц в одном шаблоне. Ну а потом уже и еще сложней - управление пользователями и контентом (но тут еще подключатся SQL). Вобщем, если с нуля, то начинайте с учебника.
Если еще способ, скачать готовый проект и путем изменений (метод тыка) усваивать, что за что отвечает (правда так знания будут не систематизированы, но кому-то так легче и интересней).