<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/tutorial.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'tutorial.useful.php',
    1 => 'Примеры кода',
    2 => 'Примеры кода',
  ),
  'up' => 
  array (
    0 => 'tutorial.php',
    1 => 'Простой учебник',
  ),
  'prev' => 
  array (
    0 => 'tutorial.firstpage.php',
    1 => 'Первая страница на PHP',
  ),
  'next' => 
  array (
    0 => 'tutorial.forms.php',
    1 => 'Работа с формами',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'chapters/tutorial.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="tutorial.useful" class="section">
   <div class="info"><h1 class="title">Примеры кода</h1></div>
   <p class="para">
    Теперь напишем полезный код и узнаем, в каком браузере
    посетитель просматривает страницу. Для этого проверим строку пользовательского
    агента, которую браузер отправляет как часть HTTP-запроса. Информация об агенте содержится
    в массиве, который хранится <a href="language.variables.php" class="link">в переменной</a>.
    В PHP каждая переменная начинается со знака доллара, а значение отдельного элемента массива
    в переменной получают по ключу. Извлечём строку пользовательского агента из элемента
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var>.
   </p>
   <blockquote class="note"><p><strong class="note">Замечание</strong>: 
    <p class="para">
     <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> — суперглобальная зарезервированная переменная,
     которую PHP заполняет информацией о запросе, среде выполнения и серверном окружении.
     Дополнительную информацию о таких переменных содержит раздел
     «<a href="language.variables.superglobals.php" class="link">Суперглобальные переменные</a>».
    </p>
   </p></blockquote>
   <p class="para">
    Для вывода значения элемента массива, который хранится в переменной, напишем следующий код:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <div class="info"><p><strong>Пример #1 Вывод значения элемента массива</strong></p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">];</span></span></code></div>
    </div>

    <div class="example-contents"><p>
     Пример вывода программы:
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Mozilla/5.0 (Linux) Firefox/112.0
</pre></div>
    </div>
   </div>
   </p>
   <p class="para">
    В PHP-переменных хранят числа, строки, массивы и значения других <a href="language.types.php" class="link">типов</a>.
    Тип значения, элемент которого выводил код предыдущего примера, называется <a href="language.types.array.php" class="link">массивом</a>.
    Массивы полезны для хранения значений произвольных типов.
   </p>
   <p class="para">
    Переменная <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> — только один пример переменной,
    к которой PHP автоматически открывает доступ. Список таких переменных приводит раздел
    «<a href="reserved.variables.php" class="link">Зарезервированные переменные</a>»
    или вывод функции <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>, которую приводил
    как пример предыдущий раздел.
   </p>
   <p class="para">
    В PHP-тег разрешается помещать больше одной инструкции и создавать
    небольшие блоки кода, которые делают больше, чем простой вызов инструкции echo.
    Например, если требуется проверить, что используется браузер Firefox,
    делают так:
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <div class="info"><p><strong>Пример #2 Пример использования <a href="language.control-structures.php" class="link">управляющих
     структур</a> и <a href="language.functions.php" class="link">функций</a></strong></p></div>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br />    echo </span><span style="color: #DD0000">'Вы пользуетесь браузером Firefox.'</span><span style="color: #007700">;<br />}</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      Пример вывода программы:
     </p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
Вы пользуетесь браузером Firefox.
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Здесь вводится ряд новых понятий. Во-первых, в коде появилась инструкция
    <a href="control-structures.if.php" class="link">if</a>. Если вы знакомы с основами синтаксиса
    языка C, код выглядит для вас логичным. Иначе, вероятно, лучше взять книгу об основах языка PHP
    и прочитать одну-две начальных главы или почитать раздел «<a href="langref.php" class="link">Справочник языка</a>» этого руководства.
   </p>
   <p class="para">
    Во-вторых, в коде появился вызов функции <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>.
    Функция <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span> — встроенная в PHP функция, которая определяет,
    содержит ли строка другую строку. В примере функция ищет строку
    <code class="literal">«Firefox»</code> (т. н. «иголку», или needle)
    в элементе <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var> (в т. н. «стоге сена»,
    или haystack). Если функция нашла «иголку» в «стоге сена», она возвращает логическое значение
    <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>. Иначе функция возвращает логическое значение <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
    Если функция вернёт <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, то условие в
    выражении конструкции <a href="control-structures.if.php" class="link">if</a> окажется истинным (<strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>),
    а PHP выполнит код в фигурных скобках {}. Иначе код
    не выполняется. Попробуйте создать аналогичные примеры с использованием
    инструкций <a href="control-structures.if.php" class="link">if</a> и
    <a href="control-structures.else.php" class="link">else</a>, а также других функций
    наподобие <span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span> и <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>.
    Каждая страница руководства также содержит примеры.
    Почитайте страницу руководства о том, <a href="about.prototypes.php" class="link">
    как читать определения функций</a>, и раздел
    <a href="language.functions.php" class="link">о PHP-функциях</a>,
    если не знаете, как использовать функции.
   </p>
   <p class="para">
    Пойдем дальше и покажем, как переходить в режим PHP и выходить
    из режима интерпретации даже в середине блока PHP-кода:
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Пример #3 Смешение режимов HTML и PHP</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br /></span><span style="color: #0000BB">?&gt;<br /></span>    &lt;h3&gt;Функция str_contains() вернула значение true&lt;/h3&gt;<br />    &lt;p&gt;Вы просматриваете страницу в браузере Firefox.&lt;/p&gt;<br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">} else {<br /></span><span style="color: #0000BB">?&gt;<br /></span>    &lt;h3&gt;Функция str_contains() вернула значение false&lt;/h3&gt;<br />    &lt;p&gt;Ваш браузер не похож на Firefox.&lt;/p&gt;<br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">}</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      Пример вывода данной программы:
     </p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
&lt;h3&gt;Функция str_contains() вернула значение true&lt;/h3&gt;
&lt;p&gt;Вы просматриваете страницу в браузере Firefox.&lt;/p&gt;
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Вместо вывода текста инструкцией echo, мы вышли из режима
    интерпретации PHP-кода и написали HTML-разметку.
    Логическая последовательность выполнения PHP-кода при этом сохраняется:
    PHP отправит пользователю только один блок HTML-разметки
    на основе значения, которое вернёт функция <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>
    по результатам поиска подстроки <code class="literal">Firefox</code>.
   </p>
  </div><?php manual_footer($setup); ?>