РНР Изучение языка
МАССИВЫ Массив это пронумерованный набор переменных, представляющих собой единое целое. Переменные, входящие в массив, называются его элементами. Доступ к нужному элементу массива выполняется по его порядковому номеру, называемому индексом. А общее число элементов массива называется его размером.
Чтобы создать массив, достаточно просто присвоить любой переменной список его элементов, разделенных запятыми и заключенных в квадратные скобки: $days = ["понедельник", "вторник", "среда", "четверг", "пятница", 'cy66oтa", "воскресенье"];
Нумерация элементов массива начинается с нуля. Чтобы получить доступ к нужному элементу массива, необходимо указать его индекс после имени массива в квадратных скобках: echo $days[2];
Другой способ создания массива использование функции array: $days = array("понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"); элементы будущего массива указываются в качестве аргументов этой функции.
Можно добавить к созданному ранее массиву еще один элемент, просто присвоив ему требуемое значение. $err = [1, 2, 3, 4]; $err[4] = 9; $err[7] = 23;
Можно создать новый элемент массива с помощью выражения вида $err[] = 888; то есть не указывать в скобках индекс создаваемого элемента, РНР присвоит ему индекс, равный индексу последнего элемента, увеличенному на единицу).
Пользуясь для создания массива функцией array, можно прямо в ней указать индексы элементов этого массива: $err = [1, 2, 3, 4, 9, 7 => 23, 888];
И еще одна замечательная возможность РНР присвоение элементам массива строковых индексов: $digits = errау ("один" => 1, "два" => 2, "три" => 3); echo $digits["два"] + 2;
Можно присвоить любому элементу массива другой массив (создать вложенный массив). $err[6] = [1 => "nl", "n2", 10 => "n10"];
После этого можно получить доступ к любому элементу вложенного массива, указав после имени массива оба индекса последовательно, причем каждый индекс должен быть в квадратных скобках: $str = $arr[6][2];
Для удаления ненужного элемента массива или всего массива можно воспользоваться функцией unset. unset($arr[6]); unset($digits); Функция gettype возвращает для массива строку array.
Цикл просмотра Цикл просмотра создается с помощью оператора foreach: foreach ( as => )
Здесь в скобках сначала указывается имя массива, с элементами которого нужно выполнить заданные в теле цикла действия. Далее, после ключевого слова as, указывается имя переменной, в которую будет занесено значение индекса очередного элемента массива, а после знака => имя переменной, куда будет занесено значение этого элемента.
Пример цикла просмотра: foreach ($days as $index => $day) { echo $days[. $index. ] =. $day. " "; }
Существует сокращенный вариант цикла просмотра: foreach ( as ) Он используется, если значения индексов элементов массива не нужны.
foreach ($days as $day) { echo $day. " "; }
Суперглобальные массивы в PHP (Superglobals) В РНР имеются предопределенные переменные типа array (массив) с глобальной областью видимости. Их еще называют суперглобальными массивами, поскольку они доступны их любого сценария на языке РНР.
Основные суперглобальные массивы: $_GET['variable'] - Переменные, переданные сценарию через HTTP GET. $_POST['variable'] - Переменные, переданные сценарию через HTTP POST.
Другие суперглобальные массивы: $_COOKIE['variable'] - Переменные, переданные сценарию через HTTP cookies. $_REQUEST['variable'] - Переменные, переданные сценарию в результате ответа пользователя на запрос (GET, POST, COOKIE) и которым, поэтому, не следует доверять.
$_GLOBALS['variable'] - Содержит ссылки на все переменные, которые в настоящий момент доступны в глобальной области видимости сценария. Ключами этого массива являются имена глобальных переменных. $_SERVER['variable'] - Переменные, установленные web-сервером или чем- то другим, напрямую связанным со средой исполнения сценария.
$_FILES['variable'] - Переменные, переданные сценарию путем передачи файла через HTTP. $_ENV['variable'] - Переменные, переданные сценарию через окружение. $_SESSION['variable'] - Переменные, которые определены в текущей сессии сценария.
Для просмотра содержимого глобальных массивов можно воспользоваться функцией var_dump( ), например, var_dump($_SERVER ) или конструкцией foreach.
Например, для просмотра массива $_SERVER сценарий может иметь такой вид: foreach ($_SERVER as $var=>$value) { echo $var = $value ; }
По умолчанию глобальные массивы доступны, поскольку в конфигурационном файле php.ini имеется установка register_globals = off. Если заменить ее на register_globals = on, то глобальные массивы будут недоступны.
СТРОКИ В РНР
Функция htmlspecialchars производит преобразование спецсимволов в их HTML эквиваленты Синтаксис: string htmlspecialchars(string str [, int quote_style [, string charset]]);htmlspecialchars Строковые функции PHP
Первый аргумент – строка, в которой надо выполнить преобразование. В качестве второго необязательного аргумента принимается константа, задающая режим преобразования кавычек. По умолчанию, используется ENT_COMPAT, преобразующая двойные кавычки, при этом одиночные остаются без изменений. В режиме ENT_QUOTES преобразуются и двойные, и одиночные кавычки. а в режиме ENT_NOQUOTES и двойные, и одиночные кавычки остаются без изменений. Третий необязательный аргумент принимает строку, представляющую набор символов, используемых в преобразовании (по умолчанию ISO ).
К примеру, если обрабатывается какое-то сообщение $msg формы, то обработка его функцией htmlspecialchars() возможна следующим образом:htmlspecialchars $msg = htmlspecialchars($msg);htmlspecialchars
<? $action = $HTTP_POST_VARS["action"]; if ( empty($action) ) { ?> Пример Сообщение <? } ?>
Код, написанный в файле test1.php: <? $msg = substr($HTTP_POST_VARS["msg"],0,102 4); substr $msg = htmlspecialchars($msg);htmlspecialchars print " ".$msg." \n"; ?>
Введем в форму для вода сообщения такой javascript-код: alert("Приветик!"); // функция вывода в JavaScript
Т.е. наша форма примет следующий вид:
В случае, если при обработке сообщения мы использовали функцию htmlspecialchars, ничего страшного не произойдет и мы просто увидим текст, который набрали: htmlspecialchars alert("Приветик!");
А вот если, мы не обработали сообщение функцией htmlspecialchars() (закомментарить строку $msg = htmlspecialchars($msg); в test1.php), то мы увидим уже не текст скрипта, а результат его выполнения:htmlspecialchars
substr() Синтаксис: string substr(string string, int start[, int length])substr Эта функция возвращает часть строки. Первый аргумент – исходная строка; второй – положение в строке, которую надо вернуть, первого символа (отсчет начинается с нуля); третий – длина строки в символах, которую надо вернуть. Если третий аргумент не указан, то возвращается вся оставшаяся часть строки.
Пример: <? $string = substr("Hello, world!", 6, 2);substr echo (); ?> Результат выполнения – символ "w". Если же третий параметр не указывать, т.е. написать $string = substr("Hello, world!", 6); то возвратиться подстрока "world!".substr
strpos() Синтаксис: string strpos(string haystack, string needle[, int offset])strpos Эта функция обеспечивает действие, обратное функции substr. Т.е. она возвращает позицию в строке haystack, в которой найдена переданная ей подстрока needle. substr
Т.е. следующий скрипт <? $string = strpos("Hello, world!", "world"); echo($string);strpos ?> вернет число 7. Необязательный параметр offset позволяет указать в строке позицию, с которой надо начинать поиск
substr_count() Синтаксис: int substr_count(string haystack, string needle) Функция substr_count() находит количество вхождений фрагмента в строку. Она возвращает число фрагментов needle, присутствующих в строке haystack.substr_count Пример: Результат: 3.substr_count
strlen() возвращает длину строки, которую принимает в качестве аргумента: <? $string = "Hello, world!!!"; $string_len = strlen($string);strlen echo ($string_len); ?>
chr() Эта функция принимает в качестве аргумента ASCII код символа и возвращает соответствующий этому коду фактический символ: <? $str = chr(36);chr echo ($str); // возвращает символ "$« ?>
ord() Выполняет действие, обратное функции chr(): <? $str = ord('$');ord echo($str); // возвращает 36 ?>
trim() Эта функция принимает в качестве своего единственного аргумента строку, и удаляет из нее пробелы слева и справа. Пример: trim
<? $str = " Hello, world! "; $str1 = trim(" Hello, world! ");trim $str_len = strlen($str); $str1_len = strlen($str1); echo(" размер исходной строки '$str' = $str_len, размер строки после удаления пробелов = $str1_len"); ?>
результат Размер исходной строки 'Hello, world!' = 19, размер строки поле удаления пробелов = 13
Функции форматного вывода. Спецификаторы преобразования printf() sprintf() sscanf()
printf() и sprintf() Синтаксис: int printf(string format [, mixed args]) string sprintf(string format [, mixed args]) функция printf() производит форматирование и выводит результаты в выходной поток (браузер или консоль), а sprintf() после осуществления требуемого форматирования просто возвращает строку.
этими функциями можно пользоваться просто как функциями вывода: <? printf("Hello!"); // выводит "Hello!" sprintf("Hello!"); // сама по себе ничего не выводит, $str = sprintf("Hello!"); // а просто возвращает строку, printf($str); // которую затем можно вывести в выходной поток ?>
аргумент format этих функций представляет собой строку, содержащую специальные символы, использующиеся при форматировании данных, содержащихся в списке аргументов. Эти спецсимволы называются спецификаторами преобразования, а символы, которые остаются неизменными при форматировании строки, называют директивами.
Спецификация определяется символом "%", за которым может следовать до пяти спецификаторов в следующем порядке: 1. Спецификатор заполнения Устанавливает символ, которым строка заполняется до заданного размера. По умолчанию используется пробел. Спецификатор заполнения действует только при наличии спецификатора минимальной ширины.
2. Спецификатор выравнивания По умолчанию дополнение строки до минимальной ширины производится с левого края (т.е., строка выравнивается по правому краю). Если добавлен символ дефиса, то строка выравнивается по левому краю. 3. Спецификатор минимальной ширины Представляет собой целое число, задающее минимальный размер форматированной строки. Если переданная строка меньше, то она дополняется символами, указанными в спецификаторе заполнения.
4. Спецификатор точности Предназначен для указания количества десятичных знаков в представлении чисел с плавающей точкой. При применении этого спецификатора для форматирования строк, он определяет максимальное количество символов, которое нужно взять из переданной строки
5. Спецификатор типа Этот спецификатор предназначен для указания типа данных, которые переданы в качестве аргумента. Спецификатор может принимать одно из следующих значений:
b – целое число, представляемое в двоичном виде; с – целое число, представляемое в виде символа с тем же ASCII кодом; d – целое число, представляемое в десятичном виде; f – число с плавающей точкой, представляемое в виде десятичной дроби; o – целое число, представляемое в восьмеричном виде; s – строка; x – целое число, представляемое в шестнадцатеричном виде в нижнем регистре; X – целое число, представляемое в шестнадцатеричном виде в верхнем регистре
выведем с помощью функции printf() строку в формате даты dd/mm/yyyy. Следующий код выводит в результате строку "02/03/2003": <? $day = 2; $month = 3; $year = 2003; printf("%02d/%02d/%04d", $day, $month, $year); ?>
Результат: 02/03/2003
<? $value = 19; printf("%.3f", $value); ?> Этот скрипт выводит число 19 в виде