# ШАГ 3. С чего начинается Родина? (основы языка) С картинки в родном букваре ;) то есть с чтения (или хотя бы просмотра) документации. Не пугайтесь. В конце - концов, если вы собираетесь работать на php вам когда-либо все равно придется заглянуть туда и лучше, если вы это сделаете сейчас, благо мануал у php очень удобный, легкий, не требующий длительного штудирования, но основы языка нужно знать и без чтения тут никак не обойтись. Вообще я потратил не мало времени за написанием скриптов на php и если это время можно измерить сотнями часов, то время, потраченное на поиск нужных функций или решение проблем с осуществлением каких-либо специфических операций, в общем время просиженной за документаций, как ни странно, не более одного часа! Так что еще раз повторю - не пугайтесь и флаг (очки) вам в руки. Начнем с того, что для PHP сущестует 4-е способа отделения его от общего кода HTML (имеется ввиду для интерпретации)
    1.  <? echo ("SGML инструкции\n"); ?>

    2.  <?php echo("XML документ\n"); ?>

    3.  <script language="php">
            echo ("специально для FrontPage");
        </script>

    4.  <% echo ("ASP-стиль"); %>
        <%= $variable; # Комментарий "<%echo .." %>
Далее необходимо коненчо сказать и о том, что инструкции в PHP отделяются друг от друга сишно-паскалевско-перловым способом - точкой с запятой. Хотя перед закрывающим тегом (`?>`) точку с запятой ставит не обязательно.
    <?php echo "This is a test";
     echo "This is a test also" ?>
PHP поддерживает комментарии в стиле 'C', 'C++' и Unix shell. Например:
     <?php
        echo "test"; // Комментарий в стиле C++
        /* Это многострочный
    	комментарий	 в стиле C++*/
        echo "test2";
        echo "Test3"; # Это unix-shell комментарий
    ?>
## ТИПЫ PHP поддерживает следующие типы данных: integer (целочисленные) floating-point numbers или double (числа с плавающей запятой) string (строки, текст) array (массивы) object (обьекты) Преобразование типов происходит следующим образом. Если переменной при равнивается строка (текст в кавычках) то эта переменная становится строковой. Если-жы с ней совершается одна из многих математических функций или она приравнивается численой переменой, она становится численной, причем если приравниваетс яне целому значению - то станет типом double. Пример: $foo = "0"; // $foo строка (ASCII 48) $foo++; // $foo тоже строка "1" (ASCII 49) $foo += 1; // $foo теперь integer (2) $foo = $foo + 1.3; // $foo теперь double (3.3) $foo = 5 + "10 паросят"; // $foo теперь снова integer (15) $foo = 5 + "10 ящиков"; // $foo и по прежнему integer (15) значение в скобках - результирующее значение переменной Преобразовывать типы можно чистА в сишном стиле: $foo = 10; // $foo это integer $bar = (double) $foo; // $bar это double Разрешенный преобразования: (int), (integer) - cast to integer (real), (double), (float) - cast to double (string) - cast to string (array) - cast to array (object) - cast to object К стати, определить тип переменной можно функциями `gettype(), is_long(), is_double(), is_string(), is_array() и is_object().` ## ОБЛАСТЬ ВИДИМОСТИ ПЕРЕМЕННЫХ Во-первых. Все переменные начинаются с символа `$` Во-вторых существуют границы определения переменных. Например что-бы использовать глобальные переменные в функциях, необходимо их сначала декларировать как глобальные, иначе вы будете исопльзовать локальные переменные. Поясню на примере: $a = 1; /* глобальное определение */ Function Test () { $a=2; echo $a; /* локальная переменная */ } Test (); echo $a; Таким образом в функции используется локальная, собственная переменная и результатом прогарммы будет вывод чисел 2 и 1, а не 2 и 2, как некоторые могли подумать. Ну а если вы хотите в функции использовать глобальные переменные, необходимо сделать так (декларировать с помощью оператора `global`): $a = 1; /* глобальное определение */ Function Test () { global $a; $a=2; echo $a; /* локальная переменная */ } Test (); echo $a; Теперь в функции вы переопредилили глобальную переменную и вывод будет числа 2 и 2. Но есть и другой способ добраться до глобально-определенных данных - через ассоциативный массив `$GLOBALS[]`. Пример предыдущей программы, реализованный новым способом: $a = 1; /* глобальное определение */ Function Test () { $GLOBALS["a"]=2; echo $a; /* локальная переменная */ } Test (); echo $a; Обратите внимание переменная в массиве указывается без символа `$` Кроме этог о PHP предоставляет возможность исопльзовать статические переменный. Все как в C/C++. Function Test () { static $a = 0; echo $a; $a++; } Test(); Test(); Test(); Результатом выполнения этого скрипта будет вывод чисел `0,1 и 2`. ## ПЕРЕМЕННЫЕ ПЕРЕМЕННЫЕ Скорее всего скоро вам понадобятся переменныес динамически (в ходе работы скрипты) изменяемым наименованием. Поясню на пример, что я имею ввиду: $a = "hello"; $$a = "world"; Данная запись означает, что переменной с именем `a` мы присваиваем значение `"hello"`. Следующей операцией переменной с именем, хранящимся в переменной с именем `a`, то есть - переменной `hello` мы присваиваем занчение `"world"` echo "$a ${$a}"; тоже самое, что и echo "$a $hello"; В результаты мы получим на экране `hello world` Дело ненмого усложняется, если вы хотите использовать подобные массивы. Ведь есл вы запишете `$$a[1]` - интерпретатору надо будет знать, что использовать в качестве переменной - `$a` или `$$a` (имя, зранящееся в `$a`). В таком случаем вам прийдется исопльзовать следующий синтаксис - `${$a[1]}` в случае, если вы хотите использовать переменную с именем, зранящимся в массиве `$a` с индексмо `1` и `${$a}[1]` в другом случае (если вы хотите использовать элемент `1` массива с именем, зранящимся в переменной `$a`. Надеюсь все понятно. До следующего выпуска! Ссылки на документацию по php: http://www.php.net/docs.php3 - on line список форматов документации. http://www.php.net/distributions/manual.zip - рекомендуая мной документация в формате HTML.