Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



Область видимости переменной - это среда, в которой она определена. В большинстве случаев все переменные 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 таких ограничений нет.

Имена переменных кнопки-изображения

При отправке формы вместо стандартной кнопки можно использовать изображение с помощью тега такого вида:

< input type=" image" src=" image.gif" name=" sub" />

Когда пользователь щелкнет где-нибудь на изображении, соответствующая форма будет передана на сервер с двумя дополнительными переменными - sub_x и sub_y. Они содержат координаты нажатия пользователя на изображение. Опытные программисты могут заметить, что на самом деле имена переменных, отправленных браузером, содержат точку, а не подчеркивание, но PHP автоматически конвертирует точку в подчеркивание.

HTTP Cookies

PHP явно поддерживает HTTP cookies как определено в » спецификации Netscape . Cookies - это механизм для хранения данных в удаленном браузере и отслеживания и идентификации таким образом вернувшихся пользователей. Вы можете установить cookies, используя функцию setcookie(). Cookies являются частью HTTP-заголовка, поэтому функция SetCookie должна вызываться до того, как браузеру будет отправлен какой бы то ни было вывод.

Если вы хотите присвоить множество значений одной переменной cookie, вы можете присвоить их как массив. Например:

<? php
setcookie(" MyCookie[foo]", " Тест 1", time()+3600);
setcookie(" MyCookie[bar]", " Тест 2", time()+3600);
? >

Пример использования setcookie()

<? php
if (isset($_COOKIE['count'])) {
$count = $_COOKIE['count'] + 1;
} else {
$count = 1;
}
setcookie(" count", $count, time()+3600);
setcookie(" Cart[$count]", $item, time()+3600);
? >


Любой сценарий PHP состоит из последовательности инструкций. Инструкцией может быть присваивание, вызов функции, повтор кода (цикл), сравнение, или даже инструкция, которая ничего не делает (пустой оператор). После инструкции обычно ставится точка с запятой. Кроме того, инструкции могут быть объединены в блоки заключением их в фигурные скобки. Блок инструкций также сам по себе является инструкцией.

if

Конструкция if является одной из наиболее важных во многих языках программирования, в том числе и PHP. Она предоставляет возможность условного выполнения фрагментов кода. Структура if реализована в PHP по аналогии с языком C:

if (выражение) инструкция

 

Следующий пример выведет a больше чем b если значение переменной $a больше чем $b:

<? php
if ($a > $b)
echo " a больше чем b";
? >

Часто необходимо, чтобы условно выполнялось более одной инструкции. Для этого можно объединить несколько инструкций в блок. Например, следующий код выведет a больше чем b, если значение переменной $a больше чем $b, и затем присвоит значение переменной $a переменной $b:

<? php
if ($a > $b) {
echo " a больше, чем b";
$b = $a;
}
? >

Инструкции if могут быть вложены в другие инструкции if неограниченное количество раз, что даёт большую гибкость в организации условного выполнения различных частей программы.
if (условие) // true или false

Инструкция;

$shop = true;

if ($shop)

echo " Иду в магазин";

echo " Иду домой";

if (условие){

Инструкция 1;

Инструкция 2;

}

$shop = true;

if ($shop){

echo " Иду в магазин";

echo " Покупаю молоко";

}


Поделиться:



Популярное:

  1. А сейчас у Вас есть желание вернуться в эту область? Тогда это было всё гораздо сложнее технически: и монтаж, и сбор информации, и другие аспекты.
  2. Адрес: Акмолинская область, Целиноградский район, село Д-Кудук, ул.Мира 9-11.
  3. Безопасность жизнедеятельности как область научных знаний
  4. Болтовые и заклепочные соединения, область применения. Виды болтов.
  5. ВИДЫ РЕЛЬСОВЫХ ЦЕПЕЙ, КЛАССИФИКАЦИЯ Р. Ц. ,ОБЛАСТЬ ПРИМЕНЕНИЯ.
  6. ГЛАВА 30 Зависимость образной видимости от интеллекта. Соответствие между физическим и духовным интеллектами.
  7. Замена переменной в определённом интеграле
  8. Какова область применения метода прямой капитализации? Какие существуют методы оценки ставки капитализации в оценке недвижимости?
  9. Коэффициенты перехода от цен базового района (Московская область) к уровню цен субъектов Российской Федерации
  10. Лекция 27. Неравенства с одной переменной
  11. Логистика снабжения как функциональная область интегрированной логистики
  12. Назначение и область применения


Последнее изменение этой страницы: 2016-06-05; Просмотров: 513; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь