Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_semestr / Интерактивное программирование web-приложений / Интерактивное программирование web-приложений.doc
Скачиваний:
51
Добавлен:
29.03.2016
Размер:
532.99 Кб
Скачать

Полезные функции

Для работы с массивами существует достаточное количество полезных функций.

Замечание:

Функция unset() позволяет удалять ключи массива. Обратите внимание, что массив НЕ будет переиндексирован. Если вы использовали только "обычные числовые индексы" (увеличивающиеся на единицу, начиная с нуля), вы можете переиндексировать массив используя array_values().

<?php $a = array(1 => 'один', 2 => 'два', 3 => 'три'); unset($a[2]); /* даст массив, представленный так:    $a = array(1 => 'один', 3 => 'три');    а НЕ так:    $a = array(1 => 'один', 2 =>'три'); */ $b = array_values($a); // Теперь $b это array(0 => 'один', 1 =>'три') ?>

Преобразование в массив

Для любого из типов: integer,float,string,booleanиresource, если вы преобразуете значение в массив, вы получите массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали.

Если вы преобразуете в массив объект (object), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов.

Если вы преобразуете в массив значение NULL, вы получите пустой массив.

Область видимости переменной

Область видимости переменной - это среда, в которой она определена. В большинстве случаев все переменные PHP имеют единую область видимости. Эта единая область видимости охватывает также включаемые (include) и требуемые (require) файлы. Например:

<?php $a = 1; include "b.inc"; ?>

Здесь переменная $aбудет доступна внутри включенного скриптаb.inc. Однако внутри определенных пользователем функций вводится локальная область видимости функции. Любая, используемая внутри функции переменная, по умолчанию ограничена локальной областью видимости функции. Например:

<?php $a = 1; /* глобальная область видимости */  function Test() {      echo $a; /* ссылка на переменную локальной области видимости */  }  Test(); ?>

Этот скрипт не сгенерирует никакого вывода, поскольку выражение echo указывает на локальную версию переменной $a, а в пределах этой области видимости ей не не было присвоено значение. Возможно вы заметили, что это немного отличается от языка C в том, что глобальные переменные в C автоматически доступны функциям, если только они не были перезаписаны локальным определением. Это может вызвать некоторые проблемы, поскольку люди могут нечаянно изменить глобальную переменную. В PHP, если глобальная переменная будет использоваться внутри функции, она должна быть объявлена глобальной внутри нее.

Ключевое слово global

Сначала пример использования global:

Пример #1 Использование global

<?php $a = 1; $b = 2; function Sum() {     global $a, $b;     $b = $a + $b; }  Sum(); echo $b; ?>

Вышеприведенный скрипт выведет "3". После определения $aи$bвнутри функции как global все ссылки на любую из этих переменных будут указывать на их глобальную версию. Не существует никаких ограничений на количество глобальных переменных, которые могут обрабатываться функцией.

Второй способ доступа к переменным глобальной области видимости - использование специального, определяемого PHP массива $GLOBALS. Предыдущий пример может быть переписан так:

Сравнение типов и результатов функций

Html-формы (get и post)

Когда происходит отправка данных формы PHP-скрипту, информация из этой формы автоматически становится доступной ему. Существует много способов получения этой информации, например:

Пример №1 Простая HTML-форма

<form action="foo.php" method="post">

Имя: <input type="text" name="username" /><br />

Email: <input type="text" name="email" /><br />

<input type="submit" name="submit" value="Отправь меня!" />

</form>

В зависимости от вашей индивидуальной установки и личных настроек существует много способов доступа к данным из ваших HTML-форм. Вот несколько примеров:

Пример №2 Доступ к данным из простой HTML POST-формы

<?php

// Доступно, начиная с PHP 4.1.0

echo $_POST['username'];

echo $_REQUEST['username'];

import_request_variables('p', 'p_');

echo $p_username;

// Доступно, начиная с PHP 3. Начиная с PHP 5.0.0, эти длинные предопределенные

// переменные могут быть отключены директивой register_long_arrays.

echo $HTTP_POST_VARS['username'];

// Доступно, если директива PHP register_globals = on. Начиная

// с PHP 4.2.0, значение по умолчанию register_globals = off.

// Использование/доверие этому методу непредпочтительно.

echo $username;

?>

GET-форма используется аналогично, за исключением того, что вместо POST вам нужно будет использовать соответствующую предопределенную переменную GET. GET относится также к QUERY_STRING (информация в URL после '?'). Так, например, http://www.example.com/test.php?id=3 содержит GET-данные, доступные как $_GET['id'].

Пример №3 Более сложные переменные формы

<?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') {     echo '<pre>';     print_r($_POST);     echo '<a href="'. $_SERVER['PHP_SELF'] .'">Попробуйте еще раз</a>';     echo '</pre>'; } else { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">     Имя:  <input type="text" name="personal[name]" /><br />     Email: <input type="text" name="personal[email]" /><br />     Пиво: <br />     <select multiple name="beer[]">         <option value="warthog">Warthog</option>         <option value="guinness">Guinness</option>         <option value="stuttgarter">Stuttgarter Schwabenbrдu</option>     </select><br />     <input type="hidden" name="action" value="submitted" />     <input type="submit" name="submit" value="Отправь меня!" /> </form> <?php } ?>

В PHP 3 использование массивов в переменных формы ограничено одномерными массивами. В PHP 4 таких ограничений нет.