﻿<?php
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
echo "<HTML><HEAD><TITLE></TITLE>\n";
echo "<META content=\"TEXT/HTML; CHARSET=WINDOWS-1251\" http-equiv=CONTENT-TYPE>\n";
echo "<META content=\"Microsoft FrontPage 4.0\" name=GENERATOR>\n";
echo "<STYLE></STYLE>\n";
echo "</HEAD>\n";
echo "<body background=../FON.JPG>\n";
echo "<ul>\n";
echo "\n";
echo "  <li><a href=\"#a\"><font face=\"Times New Roman\" size=3>Глава 4.\n";
echo "    Функции</font> </a> </li>\n";
echo "  <ul>\n";
echo "    <li><a href=\"#b\"><font face=\"Times New Roman\" size=\"3\">Что такое\n";
echo "      функция?</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#c\"><font face=\"Times New Roman\" size=\"3\">Определение\n";
echo "      и вызов функций</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#d\"><font face=\"Times New Roman\" size=\"3\">Вложенные\n";
echo "      функции</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#e\"><font face=\"Times New Roman\" size=\"3\">Возврат значений\n";
echo "      из функции</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#f\"><font face=\"Times New Roman\" size=\"3\">Рекурсивные\n";
echo "      функции</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#g\"><font face=\"Times New Roman\" size=\"3\">Функции-переменные</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#h\"><font face=\"Times New Roman\" size=\"3\">Построение\n";
echo "      библиотек функций</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#i\"><font face=\"Times New Roman\" size=\"3\">Итоги</font>\n";
echo "      </a>\n";
echo "    </li>\n";
echo "  </ul>\n";
echo "</ul>\n";
echo "<A NAME=\"a\"></A>\n";
echo "<p>&nbsp;</p>\n";
echo "<p><font face=\"Times New Roman\" color=\"#000000\" size=\"5\">ГЛАВА 4</font></p>\n";
echo "<p><font face=\"Times New Roman\" color=\"#000000\" size=\"5\">Функции</font></p>\n";
echo "<p>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "В этой главе представлены общие концепции\n";
echo "функционального программирования — одного\n";
echo "из самых влиятельных принципов в области\n";
echo "разработки приложений. При помощи функций\n";
echo "можно создавать компоненты многократного\n";
echo "использования, которые легко изменяются\n";
echo "при необходимости и оказываются особенно\n";
echo "удобными при разработке web-приложений, не\n";
echo "содержащих серьезных различий на\n";
echo "концептуальном и практическом уровне.\n";
echo "Функциональное программирование помогает\n";
echo "создавать более короткие и удобочитаемые\n";
echo "программы.\n";
echo "</font></p>\n";
echo "<p>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Данная глава посвящена функциям РНР, их\n";
echo "определению и применению на практике. Хотя\n";
echo "основное внимание в ней уделяется\n";
echo "определению и вызову пользовательских\n";
echo "функций, необходимо помнить и о том, что в\n";
echo "РНР существуют сотни стандартных функций.\n";
echo "Стандартные функции работают точно так же,\n";
echo "как пользовательские, и обеспечивают\n";
echo "заметную экономию времени при создании\n";
echo "новых приложений. Обновленный список\n";
echo "стандартных функций РНР можно найти по\n";
echo "адресу <a href=\"http://www.php.net\">http://www.php.net</a>.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"b\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Что такое функция?</font></p>\n";
echo "</b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">\n";
echo "Функцией </font></font></i><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">называется\n";
echo "фрагмент программного кода, обладающий\n";
echo "уникальным именем и предназначенный для\n";
echo "решения конкретной задачи. Функция\n";
echo "вызывается по имени в разных точках\n";
echo "программы, что позволяет многократно\n";
echo "выполнять фрагмент с указанным именем.\n";
echo "Преимущество такого решения заключается в\n";
echo "том, что блок кода пишется всего один раз, а\n";
echo "затем легко модифицируется по мере\n";
echo "необходимости.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"c\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Определение и\n";
echo "вызов функций</font></p>\n";
echo "</b>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Определить новую функцию в РНР несложно.\n";
echo "Функции могут создаваться в любой точке\n";
echo "программ РНР, однако по соображениям\n";
echo "структурной организации кода удобнее\n";
echo "разместить все функции, используемые\n";
echo "сценарием, в самом начале сценарного </font></p>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">\n";
echo "файла. Существует и другой способ, заметно\n";
echo "повышающий эффективность программирования\n";
echo "и способствующий многократному\n";
echo "использованию кода, — выделение функций в\n";
echo "отдельный файл (называемый </font><i><font COLOR=\"#000000\">библиотекой).\n";
echo "</font></i><font COLOR=\"#000000\">Библиотеки\n";
echo "удобны тем, что их функции можно\n";
echo "использовать в разных приложениях, не\n";
echo "создавая лишних копий и не рискуя допустить\n";
echo "ошибки в процессе копирования. Эта тема\n";
echo "подробно рассматривается в разделе «Построение\n";
echo "библиотек функций» ближе к концу главы.\n";
echo "</font></font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">Определение функции обычно состоит из\n";
echo "трех частей:\n";
echo "</font></p>\n";
echo "<ul>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">имени функции;\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">круглых скобок, в которых перечисляются\n";
echo "    необязательные входные параметры,\n";
echo "    разделенные запятыми;\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">тела функции, заключенного в фигурные\n";
echo "    скобки.\n";
echo "</font></li>\n";
echo "</ul>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">Обобщенный синтаксис функций РНР\n";
echo "выглядит так:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function имя_функции ([$параметр1. $параметр2, ....\n";
echo "$параметрn]) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">тело функции</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Имя функции должно подчиняться условиям,\n";
echo "приведенным для идентификаторов в главе 2.\n";
echo "После имени функции следуют обязательные\n";
echo "круглые скобки, в которые заключается\n";
echo "необязательный список входных параметров ($параметр1,\n";
echo "$параметр2, .... $параметрn). Вследствие\n";
echo "относительно либеральных принципов\n";
echo "определения переменных в РНР указывать тип\n";
echo "входных параметров не нужно. Хотя такой\n";
echo "подход имеет свои преимущества, следует\n";
echo "помнить, что механизм РНР не проверяет\n";
echo "аргументы на соответствие тем типам,\n";
echo "которые должны обрабатываться функцией.\n";
echo "Случайные ошибки в использовании входных\n";
echo "параметров могут привести к неожиданным\n";
echo "последствиям (чтобы убедиться в том, что\n";
echo "параметр относится к нужному типу, можно\n";
echo "проверить его стандартной функцией gettype( )).\n";
echo "После закрывающей круглой скобки следуют\n";
echo "фигурные скобки, в которые заключается\n";
echo "программный код, ассоциируемый с именем\n";
echo "функции.\n";
echo "</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Рассмотрим простой пример использования\n";
echo "функции. Предположим, вы хотите создать\n";
echo "функцию для вывода лицензионной информации\n";
echo "на web-странице:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function display_copyright() {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Copyright &amp;copy; 2001 PHP-Powered Recipes. All Rights\n";
echo "Reserved.&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Если ваш web-сайт состоит из нескольких\n";
echo "страниц, достаточно вызвать эту функцию в\n";
echo "конце каждой страницы — и вам не придется\n";
echo "заново переписывать один и тот же текст. А\n";
echo "когда наступит 2002 год, одно простое\n";
echo "изменение текста, выводимого этой функцией,\n";
echo "приведет к автоматическому обновлению всех\n";
echo "страниц. Если бы не преимущества\n";
echo "функционального программирования, вам\n";
echo "пришлось бы вручную редактировать все\n";
echo "страницы, на которых выводится\n";
echo "лицензионная информация.\n";
echo "</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Рассмотрим разновидность функции\n";
echo "display_copyright(), которой при вызове передается\n";
echo "параметр. Предположим, вы отвечаете за\n";
echo "администрирование нескольких web-сайтов,\n";
echo "каждому из которых присвоено отдельное имя.\n";
echo "На каждом сайте имеется собственный\n";
echo "административный сценарий с несколькими\n";
echo "переменными, относящимися к этому сайту; к\n";
echo "их числу принадлежит переменная $site_name с\n";
echo "именем\n";
echo "</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "сайта. В этом случае функцию display_copyright()\n";
echo "можно записать следующим образом:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function display_copyright($site_name) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Copyright &amp;copy; 2001 $site_name. All Rights Reserved.&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Переменная $site_name, значение которой\n";
echo "присваивается за пределами display_copy-right(),\n";
echo "передается функции в качестве параметра.\n";
echo "Переданное значение можно использовать и\n";
echo "модифицировать в любом месте функции,\n";
echo "однако любые изменения будут действовать\n";
echo "лишь внутри этой функции. Впрочем,\n";
echo "специальные ключевые слова позволяют\n";
echo "сделать так, чтобы изменения параметров\n";
echo "распространялись и за пределы display_copyright().\n";
echo "Эти ключевые слова были представлены в\n";
echo "главе 2, в общем обзоре области видимости\n";
echo "переменных и ее отношения к функциям.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"d\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Вложенные функции</font></p>\n";
echo "</b>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Функции можно вызывать внутри других\n";
echo "функций — по аналогии с тем, как одна\n";
echo "управляющая конструкция (if, while, for и т. д.)\n";
echo "может находиться внутри другой. Такая\n";
echo "возможность удобна в любых программах, и в\n";
echo "больших, и в малых, поскольку она\n";
echo "увеличивает степень модульности\n";
echo "приложения и упрощает сопровождение\n";
echo "программы.\n";
echo "</font>\n";
echo "</p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "В примере, описанном выше, можно полностью\n";
echo "избавиться от необходимости модификации\n";
echo "даты. Для этого достаточно включить в\n";
echo "d1splay_copyright() вызов стандартной функции РНР date(\n";
echo "):\n";
echo "</font>\n";
echo "</p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">function display_copyright($site_name)\n";
echo "{</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;Copyright\n";
echo "&amp;copy&quot;. date(&quot;Y&quot;). &quot;$site_name. All Rights Reserved.&quot;;</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">}</font></p>\n";
echo "<p>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Параметр Y функции date( ) указывает, что\n";
echo "возвращаемое значение представляет собой\n";
echo "текущий год, отформатированный в виде\n";
echo "четырех цифр. Если системная дата\n";
echo "установлена правильно, РНР при каждом\n";
echo "выполнении сценария будет выводить год.\n";
echo "Функция РНР date( ) отличается исключительной\n";
echo "гибкостью и поддерживает 25 разных флагов\n";
echo "форматирования даты и времени.\n";
echo "</font></p>\n";
echo "<p>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Также допускается объявление функций\n";
echo "внутри других функций. Тем не менее,\n";
echo "вложенное объявление еще не делает функцию\n";
echo "«защищенной», то есть не ограничивает\n";
echo "возможность ее вызова той функцией, в\n";
echo "которой она была объявлена. Более того,\n";
echo "вложенная функция не наследует параметров\n";
echo "родительской функции; параметры должны\n";
echo "передаваться ей точно так же, как и любой\n";
echo "другой функции. Впрочем, вложенные\n";
echo "объявления функций все равно могут\n";
echo "использоваться из соображений удобства\n";
echo "сопровождения и наглядности. Пример\n";
echo "вложенного объявления приведен в листинге\n";
echo "4.1.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><i><font size=\"3\" face=\"Times New Roman\"><font color=\"#000000\">Листинг 4.1. </font></font></i></b><i><font color=\"#000000\" size=\"3\">Эффективное\n";
echo "использование вложенных функций</font></i></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function display_footer($site_name) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function display_copyright($site_name) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Copyright &amp;сору&quot;. date(&quot;Y&quot;).</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$site_name. All Rights Reserved.&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;&lt;center&gt;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">&lt;a href = \&quot;\&quot;&gt;home&lt;/a&gt; | &lt;a href = \&quot;\&quot;&gt;recipes&lt;/a&gt;\n";
echo "| &lt;a href = \&quot;\&quot;&gt;events&lt;/a&gt;&lt;br&gt;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">&lt;a href = \&quot;\&quot;&gt;tutorials&lt;/a&gt; | &lt;a href = \&quot;\&quot;&gt;about&lt;/a&gt;\n";
echo "I &lt;a href = \&quot;\&quot;&gt;contact us&lt;/a&gt;&lt;br&gt;&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">display_copyright($site_name);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;&lt;/center&gt;&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$site_name = &quot;PHP Recipes&quot;:</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">display_footer($site_name);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">display_copyhght($site_name);</font></p>\n";
echo "<p><font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "Сценарий выводит следующий результат:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">home | recipes | events</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">tutorials | about | contact us</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">Copyright © 2001 PHP Recipes. All Rights Reserved</font></p>\n";
echo "<p><font face=\"Times New Roman\" color=\"#000000\" size=\"3\"><i><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\">Обратите\n";
echo "внимание: функцию display_copyright( ) можно вызвать\n";
echo "и за пределами display_footer( ) по аналогии стем,\n";
echo "как функция display_footer( ) использовалась в\n";
echo "предыдущем примере. Концепция защищенных\n";
echo "функций в РНР не поддерживается.</i></font></p>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\">\n";
echo "<font COLOR=\"#000000\">\n";
echo "Хотя вложенные функции не защищены от\n";
echo "вызова из других точек сценария, они не\n";
echo "могут вызываться </font><i><font FACE=\"Times New Roman\" SIZE=\"3\" COLOR=\"#000000\">до\n";
echo "</font></i><font COLOR=\"#000000\">вызова\n";
echo "своей родительской функции. При попытке\n";
echo "вызвать вложенную функцию раньше вызова\n";
echo "родительской функции выводится сообщение\n";
echo "об ошибке.\n";
echo "</font></font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"e\"></A><font face=\"Times New Roman\" color=\"#000000\" size=\"4\">Возврат значений\n";
echo "из функции</font></p>\n";
echo "</b>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "По завершении работы функции часто бывает\n";
echo "полезно вернуть некоторое значение, для\n";
echo "чего результат вызова функции обычно\n";
echo "присваивается некоторой переменной.\n";
echo "Функции могут возвращать значения любых\n";
echo "типов, в том числе массивы и списки. Пример\n";
echo "приведен в листинге 4.2, где функция calculate_cost(\n";
echo ")\n";
echo "вычисляет налог с заданной суммы и\n";
echo "возвращает общую сумму вместе с налогом.\n";
echo "Прежде чем переходить к рассмотрению\n";
echo "листинга, просмотрите краткое описание\n";
echo "алгоритма на псевдокоде:\n";
echo "</font></p>\n";
echo "<ul>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Перед вызовом функции задать значения\n";
echo "    переменных: $price (цена товара) и $tax (налоговая\n";
echo "    ставка).\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Объявить функцию calculate_cost( ). При вызове\n";
echo "    функция получает два параметра:\n";
echo "    налоговую ставку и цену товара.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Вычислить цену с учетом налога и вернуть\n";
echo "    ее командой return.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Вызвать calculate_cost() и присвоить значение,\n";
echo "    возвращенное функцией, переменной $total_cost.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Вывести соответствующее сообщение.\n";
echo "</font></li>\n";
echo "</ul>\n";
echo "<b>\n";
echo "<p><font face=\"Times New Roman\"><font size=\"3\" COLOR=\"#000000\"><i>Листинг 4.2.\n";
echo "</i>\n";
echo "</font></font></b><i><font size=\"3\">Создание\n";
echo "функции для вычисления налога</font>\n";
echo "</i>\n";
echo "</p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">$price = 24.99; $tax = .06;</font></p>\n";
echo "<p>\n";
echo "<font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "function calculate_cost($tax, $price) {\n";
echo "</font>\n";
echo "</p>\n";
echo "<p>\n";
echo "<font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "$sales_tax = $tax;\n";
echo "</font>\n";
echo "</p>\n";
echo "<p>\n";
echo "<font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "return $price + ($price * $sales_tax);\n";
echo "</font>\n";
echo "</p>\n";
echo "<p>\n";
echo "<font size=\"3\" color=\"#000000\" face=\"Courier New\">}</font>\n";
echo "</p>\n";
echo "<p>\n";
echo "<font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "// Обратите внимание на возврат значения\n";
echo "функцией calculate_cost(). $total_cost = calculate_cost ($tax. $price);\n";
echo "</font>\n";
echo "</p>\n";
echo "<p>\n";
echo "<font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "// Округлить цену до двух десятичных цифр.\n";
echo "</font>\n";
echo "</p>\n";
echo "<p>\n";
echo "<font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "$total_cost = round($total_cost. 2);\n";
echo "</font>\n";
echo "</p>\n";
echo "<p><font face=\"Courier New\" color=\"#000000\" size=\"3\">print &quot;Total cost: $&quot;.$total_cost;</font></p>\n";
echo "<p><font face=\"Courier New\" color=\"#000000\" size=\"3\">// $total cost = 26.49</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" color=\"#000000\"><i><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\">Функции,\n";
echo "не возвращающие значений, также называются\n";
echo "процедурами.</i></font></p>\n";
echo "<p>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Существует и другой способ использования\n";
echo "возвращаемых значений, при котором вызов\n";
echo "функции включается прямо в условную/циклическую\n";
echo "команду. В следующей программе (листинг 4.3)\n";
echo "сумма счета пользователя сравнивается с\n";
echo "предельным размером кредита. Алгоритм на\n";
echo "псевдокоде выглядит так:\n";
echo "</font></p>\n";
echo "<ul>\n";
echo "  <li>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Объявить функцию check_limit( ), которая при\n";
echo "    вызове получает два параметра. Первый\n";
echo "    параметр, $total_cost, определяет общую сумму\n";
echo "    счета, накопленную пользователем до\n";
echo "    настоящего момента. Второй параметр, $credit_limit,\n";
echo "    определяет максимальную сумму, которую\n";
echo "    может потратить пользователь.\n";
echo "</font></li>\n";
echo "  <li>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Если накопленная сумма счета превышает\n";
echo "    предельный размер кредита, функция\n";
echo "    возвращает ложное значение (0).\n";
echo "</font></li>\n";
echo "  <li>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Если условие команды i f оказывается\n";
echo "    ложным, работа функции еще не завершена. В\n";
echo "    этом случае общая сумма не превышает\n";
echo "    предельного размера кредита, поэтому\n";
echo "    функция должна вернуть логическую истину.\n";
echo "</font></li>\n";
echo "  <li>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Вызвать функцию check_limit( ) в условии\n";
echo "    команды if. Проверить, какое значение было\n";
echo "    возвращено при вызове — истинное или\n";
echo "    ложное. В зависимости от результата\n";
echo "    проверки выполняется то или иное\n";
echo "    действие.\n";
echo "</font></li>\n";
echo "</ul>\n";
echo "<p>\n";
echo "<font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Если при вызове check_limit( ) было получено\n";
echo "значение TRUE, мы предлагаем пользователю\n";
echo "продолжить закупку. В противном случае\n";
echo "пользователь информируется о превышении\n";
echo "кредита.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><font face=\"Times New Roman\"><font size=\"3\" COLOR=\"#000000\"><i>Листинг 4.3.\n";
echo "</i>\n";
echo "</font></font></b><i><font size=\"3\">Сравнение\n";
echo "текущей суммы счета пользователя с\n";
echo "предельным размером кредита</font>\n";
echo "</i></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$cost = 1456.22;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$limit = 1000.00;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function check_limit($total_cost.\n";
echo "$credit_limit)</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">if ($total_cost &gt;\n";
echo "$credit_limit) :</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">return 0;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">endif;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">return 1;</font></p>\n";
echo "<p><font size=\"3\" color=\"#000000\" face=\"Courier New\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">if (check_limit($cost.\n";
echo "$limit)) :</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Продолжить закупки</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Keep shopping!&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">else :</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Please lower your total bill to less than $&quot;.$limit.&quot;!&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">endif;</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "При выполнении листинга 4.3 будет выведено\n";
echo "сообщение об ошибке, поскольку значение $cost\n";
echo "превышает $limit.\n";
echo "</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Функция также может возвращать сразу\n";
echo "несколько значений при помощи списка.\n";
echo "Продолжая кулинарную тему, давайте напишем\n";
echo "функцию, которая бы возвращала три лучших\n";
echo "года для указанного сорта вина. Функция\n";
echo "приведена в листинге 4.4, но сначала\n";
echo "прочитайте алгоритм на псевдокоде:\n";
echo "</font></p>\n";
echo "<ul>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Объявить функцию best_years( ), вызываемую с\n";
echo "    одним параметром. Параметр $label\n";
echo "    определяет сорт вина, для которого\n";
echo "    пользователь хотел бы узнать три\n";
echo "    рекомендуемых года.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Объявить два массива, $merlot и $zinfandel. В\n";
echo "    каждом массиве хранится три\n";
echo "    рекомендуемых года для соответствующего\n";
echo "    сорта вина.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Написать команду return, которая бы\n";
echo "    использовала особые возможности\n";
echo "    переменных. Выражение $$label сначала\n";
echo "    интерпретирует переменную $label, а затем\n";
echo "    интерпретирует полученное значение как\n";
echo "    имя другой переменной. В настоящем\n";
echo "    примере массив merlot возвращается в виде\n";
echo "    списка, и каждый возвращаемый год\n";
echo "    занимает свою позицию в списке, для\n";
echo "    которого вызывалась функция.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Вывести сообщение с информацией о\n";
echo "    рекомендуемых годах.\n";
echo "</font></li>\n";
echo "</ul>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\" COLOR=\"#000000\"><i><b>Листинг 4.4.</b> Возвращение функцией\n";
echo "нескольких величин</i></font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Сорт вина, для которого выводятся лучшие\n";
echo "годы</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$label = &quot;merlot&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Функция использует массивы и &quot;переменную\n";
echo "в переменной&quot;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// для возвращения нескольких значений.</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function best_years($label) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$merlot = array(&quot;1987&quot;, &quot;1983&quot;, &quot;1977&quot;);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$zinfandel = array(&quot;1992&quot;, &quot;1990&quot;, &quot;1989&quot;);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">return $$label;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "// Функция list( ) используется получения\n";
echo "возвращаемых значений.\n";
echo "</font></p>\n";
echo "<p><font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "list ($yr_one, $yr_two. $yr_three) = best_years($label);\n";
echo "</font></p>\n";
echo "<p><font face=\"Courier New\" size=\"3\" COLOR=\"#000000\">\n";
echo "print &quot;$label had three particularly remarkable years: $yr_one. $yr_two,\n";
echo "and $yr_three.&quot;;\n";
echo "</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Программа выводит следующий результат:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">merlot has three particularly remarkable years: 1987, 1983 and 1977.</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"f\"></A><font face=\"Times New Roman\" color=\"#000000\" size=\"4\">Рекурсивные\n";
echo "функции</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">\n";
echo "Ситуация, при которой функция многократно\n";
echo "вызывает сама себя, пока не будет выполнено\n";
echo "некоторое условие, открывает замечательные\n";
echo "возможности. При правильном использовании </font><i><font FACE=\"Times New Roman\" SIZE=\"3\" COLOR=\"#000000\">рекурсивные\n";
echo "</font></i><font COLOR=\"#000000\">функции\n";
echo "уменьшают объем программы и делают ее более\n";
echo "выразительной. Рекурсивные функции\n";
echo "особенно часто используются при выполнении\n";
echo "повторяющихся действий — например, при\n";
echo "поиске в файлах/массивах и построении\n";
echo "графических изображений (например,\n";
echo "фракталов). Классическим примером\n";
echo "рекурсивных функций, встречающимся во\n";
echo "многих курсах программирования, является\n";
echo "суммирование чисел от 1 до N. Программа,\n";
echo "приведенная в листинге 4.5, суммирует все\n";
echo "целые числа от 1 до 10.\n";
echo "</font></font></p>\n";
echo "<b>\n";
echo "<p><font face=\"Times New Roman\"><font size=\"3\" COLOR=\"#000000\"><i>Листинг 4.5.\n";
echo "</i>\n";
echo "</font></font></b><i><font size=\"3\">Использование\n";
echo "рекурсивной функции для суммирования\n";
echo "последовательных целых чисел</font>\n";
echo "</i></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function summation ($count) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">if ($count != 0) :</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">return $count + summation($count-1);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">endif;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$sum = summation(10);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Summation = $sum&quot;;</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "В результате выполнения листинга 4.5 будет\n";
echo "выведен следующий результат:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">Summation = 55</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Если функция вызывается достаточно часто,\n";
echo "рекурсия делает программу более\n";
echo "эффективной. Тем не менее, при\n";
echo "использовании рекурсии необходима\n";
echo "осторожность, поскольку ошибки могут\n";
echo "привести к зацикливанию программы.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"g\"></A><font face=\"Times New Roman\" color=\"#000000\" size=\"4\">Функции-переменные</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">\n";
echo "Одной из интересных возможностей РНР\n";
echo "являются </font><i><font COLOR=\"#000000\">функции-переменные\n";
echo "</font></i><font COLOR=\"#000000\">(variable\n";
echo "functions), то есть динамические вызовы функций,\n";
echo "имена которых определяются во время\n";
echo "выполнения программы. Хотя в большинстве web-приложений\n";
echo "можно обойтись и без функций-переменных,\n";
echo "они значительно сокращают объем и\n";
echo "сложность программного кода, а также часто\n";
echo "снимают необходимость в условных командах\n";
echo "if.\n";
echo "</font></font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">Вызов функции-переменной представляет\n";
echo "собой имя переменной, за которым следует\n";
echo "пара круглых скобок. В круглых скобках\n";
echo "могут перечисляться параметры (однако\n";
echo "присутствие параметров не обязательно).\n";
echo "Обобщенный синтаксис функции-переменной:\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$имя_функции( );</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Следующая программа (листинг 4.6)\n";
echo "демонстрирует эту непривычную, но полезную\n";
echo "возможность. Допустим, программа выводит\n";
echo "разную информацию в зависимости от языка,\n";
echo "выбранного пользователем. В нашем примере\n";
echo "для простоты используются приветственные\n";
echo "сообщения для англо- и италоязычных\n";
echo "пользователей. Алгоритм на псевдокоде:\n";
echo "</font></p>\n";
echo "<ul>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Создать сообщение для итальянского\n";
echo "    языка в функции с именем italian.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Создать сообщение для английского языка\n";
echo "    в функции с именем english.\n";
echo "</font></li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Передать информацию о выбранном языке в\n";
echo "    сценарий, присвоив значение переменной\n";
echo "    $language.\n";
echo "</font></li>\n";
echo "</ul>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Переменная $language используется для\n";
echo "выполнения функции-переменной (в\n";
echo "приведенном примере — italian()).\n";
echo "</font></p>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\" COLOR=\"#000000\"><i><b>Листинг 4.6.</b> Выбор функции в зависимости от\n";
echo "пользовательского ввода</i></font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Приветствие на итальянском языке, function\n";
echo "italian( ) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">&quot; print &quot;Benvenuti al PHP Recipes.&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Приветствие на английском языке</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function english( ) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">print &quot;Welcome to PHP Recipes.&quot;;</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Выбрать итальянский язык</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$language = &quot;italian&quot;:</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Выполнить функцию-переменную</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$language( );</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Листинг 4.6 демонстрирует интересную\n";
echo "концепцию функций-переменных и наглядно\n";
echo "показывает, что функции-переменные\n";
echo "способствуют уменьшению объема\n";
echo "программного кода. Если бы не эта\n";
echo "возможность, функцию пришлось бы выбирать\n";
echo "командой if или switch; это привело бы к\n";
echo "заметному увеличению объема программного\n";
echo "кода и риску появления дополнительных\n";
echo "ошибок при кодировании.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"h\"></A><font face=\"Times New Roman\" color=\"#000000\" size=\"4\">Построение\n";
echo "библиотек функций</font></p>\n";
echo "</b>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Библиотеки функций — одно из самых\n";
echo "эффективных средств экономии времени при\n";
echo "построении приложений. Предположим, вы\n";
echo "написали серию функций для сортировки\n";
echo "массива. Вероятно, эти функции будут\n";
echo "неоднократно использоваться в разных\n";
echo "приложениях. Вместо того чтобы постоянно\n";
echo "переписывать эти функции в новый сценарий\n";
echo "или копировать их через текстовый буфер,\n";
echo "гораздо удобнее разместить все функции\n";
echo "сортировки в отдельном файле и присвоить\n";
echo "ему легко узнаваемое имя (например,\n";
echo "array_sorting.inc). Пример такого файла приведен в\n";
echo "листинге 4.7.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><font face=\"Times New Roman\"><font size=\"3\" COLOR=\"#000000\"><i>Листинг 4.7.\n";
echo "</i>\n";
echo "</font></font></b><i><font size=\"3\">Пример\n";
echo "библиотеки функций (array_sorting.inc)</font>\n";
echo "</i></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">&lt;?</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Файл: array_sorting.inc</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Назначение: библиотека функций для\n";
echo "сортировки массивов.</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Дата: 17 июля 2000 г.</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function merge_sort($array.\n";
echo "$tmparray, $right, $left) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">...</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function bubble_sort($array.\n";
echo "$n) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">...</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">function quicksort ($array.\n";
echo "$right. $left) {</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">...</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">}</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">?&gt;</font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">Библиотека\n";
echo "array_sorting.inc служит накопителем для всех\n";
echo "функций сортировки. Это удобно, поскольку\n";
echo "функции фактически группируются по своему\n";
echo "назначению и при необходимости можно легко\n";
echo "найти нужную функцию. Как видно из листинга\n";
echo "4.7, в начало библиотеки обычно включается\n";
echo "заголовок из нескольких строк комментария,\n";
echo "чтобы при открытии файла библиотеки можно\n";
echo "было сразу получить краткую сводку его\n";
echo "содержимого. После собственной библиотеки\n";
echo "функций можно включить ее в сценарий при\n";
echo "помощи команд РНР include( ) и require( ), в\n";
echo "результате чего все функции библиотеки\n";
echo "становятся доступными. В общем виде\n";
echo "синтаксис этих команд выглядит так:\n";
echo "</font></p>\n";
echo "<i>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">include(путь/имя_файла);</font></p>\n";
echo "<p></i><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">require(</font><i><font COLOR=\"#000000\">путь/имя_файла</font></i><font COLOR=\"#000000\">);\n";
echo "</font></font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Также существует альтернативный вариант:\n";
echo "</font></p>\n";
echo "<p><font face=\"Courier New\" size=\"3\"><font COLOR=\"#000000\">include &quot;</font><i><font COLOR=\"#000000\">путь/имя_файла&quot;;</font></i></font></p>\n";
echo "<p><font size=\"3\"><font face=\"Courier New\" COLOR=\"#000000\">require &quot;</font></font><i><font face=\"Courier New\" COLOR=\"#000000\" size=\"3\">путь/имя_файла&quot;;\n";
echo "</font></p>\n";
echo "</i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">\n";
echo "где </font><i><font FACE=\"Times New Roman\" SIZE=\"3\" COLOR=\"#000000\">путь\n";
echo "</font></i><font COLOR=\"#000000\">определяет\n";
echo "относительный или абсолютный путь к файлу.\n";
echo "Конструкции include( ) и requirе( ) подробно описаны\n";
echo "в главе 9. А пока достаточно запомнить, что\n";
echo "эти конструкции используются для включения\n";
echo "файла непосредственно в сценарий.\n";
echo "</font></font></p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">Предположим, вы хотите воспользоваться\n";
echo "функциями библиотеки array_sorting.inc в сценарии.\n";
echo "Пример включения библиотеки показан в\n";
echo "листинге 4.8.\n";
echo "</font></p>\n";
echo "<b>\n";
echo "<p><font face=\"Times New Roman\"><font size=\"3\" COLOR=\"#000000\"><i>Листинг 4.8.\n";
echo "</i>\n";
echo "</font></font></b><i><font size=\"3\">Включение\n";
echo "библиотечного файла (array_sorting.inc) в сценарий</font>\n";
echo "</i></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Предполагается, что библиотека\n";
echo "array_sorting.inc</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// находится в одном каталоге со сценарием.</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">include(&quot;array_sorting.inc&quot;);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Теперь вы можете использовать любые\n";
echo "функции из array_sorting.inc</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$some_array = array (50, 42. 35, 46);</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">// Использовать функцию\n";
echo "bubble_sort()</font></p>\n";
echo "<p><font size=\"3\" face=\"Courier New\" COLOR=\"#000000\">$sorted_array = bubble_sort($some_array, 1);</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"i\"></A><font face=\"Times New Roman\" color=\"#000000\" size=\"4\">Итоги</font></p>\n";
echo "</b>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Эта глава посвящена функциям и их\n";
echo "применению в РНР. В частности, мы\n";
echo "рассмотрели следующие темы:\n";
echo "</font>\n";
echo "\n";
echo "</p>\n";
echo "<ul>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "определение и вызов функций;\n";
echo "</font>\n";
echo "\n";
echo "  </li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "вложенные функции;\n";
echo "</font>\n";
echo "\n";
echo "  </li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "возврат значений из функции;\n";
echo "</font>\n";
echo "\n";
echo "  </li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "рекурсивные функции;\n";
echo "</font>\n";
echo "\n";
echo "  </li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "функции-переменные;\n";
echo "</font>\n";
echo "\n";
echo "  </li>\n";
echo "  <li><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "построение библиотек функций.\n";
echo "</font>\n";
echo "\n";
echo "  </li>\n";
echo "</ul>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Хорошее знание этого материала абсолютно\n";
echo "необходимо для понимания концепций,\n";
echo "рассматриваемых в следующих главах,\n";
echo "поскольку функции используются везде, где\n";
echo "это возможно. Как и в других главах, я\n";
echo "рекомендую поэкспериментировать с\n";
echo "примерами, чтобы лучше усвоить изложенный\n";
echo "материал.\n";
echo "</font>\n";
echo "\n";
echo "</p>\n";
echo "<p><font face=\"Times New Roman\" size=\"3\" COLOR=\"#000000\">\n";
echo "Глава 5 посвящена массивам — несомненно,\n";
echo "эта тема заметно обогатит ваши познания в\n";
echo "РНР. В главе 5 мы познакомимся с основными\n";
echo "принципами хранения данных, постепенно\n";
echo "продвигаясь к более содержательным и, в\n";
echo "конечном счете, более интересным\n";
echo "приложениям.\n";
echo "</font>\n";
echo "\n";
echo "</p>\n";
echo "<table width=\"300\" border=\"0\" align=\"center\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000066\" class=\"mtx1\">\n";
echo "<tr>\n";
echo "<td bgcolor=\"#CAEEFF\"><center>&nbsp;<a href=\"../Chapter 3/1.htm\"><strong>&lt;&lt;&lt;&nbsp;Назад</strong></a>&nbsp;\n";
echo "</center></td>\n";
echo "<td bgcolor=\"#CAEEFF\"><center>&nbsp;<a href=\"../index.html\"><strong>Содержание</strong></a>&nbsp;\n";
echo "</center></td>\n";
echo "<td bgcolor=\"#CAEEFF\"><center>&nbsp;<a href=\"../Chapter 5/1.htm\"><strong>Вперед&nbsp;&gt;&gt;&gt;</strong></a>&nbsp;\n";
echo "</center></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</BODY></HTML>\n";
?>
