﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>PHP 5</title>
	<atom:link href="http://mambo-phpshop.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://mambo-phpshop.net</link>
	<description></description>
	<pubDate>Wed, 17 Sep 2008 08:12:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Настройка поддержки сеанса</title>
		<link>http://mambo-phpshop.net/2008/09/15/nastrojka-podderzhki-seansa/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/nastrojka-podderzhki-seansa/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 10:01:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Передача идентификатора сеанса]]></category>

		<category><![CDATA[Механизм]]></category>

		<category><![CDATA[сеанса]]></category>

		<category><![CDATA[Типовая]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=182</guid>
		<description><![CDATA[Несмотря на то что сеансы в РНР — очень простое в использовании средство, существует много тонкостей и настроек, предназначенных для получения максимальной гибкости этого механизма. В этом разделе рассматриваются конфигурационные директивы и связанные с сеансами функции, не рассмотренные ранее, и разъясняется их использование в реальных РНР-сценариях. Хотя некоторые связанные с сеансами директивы уже были рассмотрены, [...]]]></description>
			<content:encoded><![CDATA[<p>Несмотря на то что сеансы в РНР — очень простое в использовании средство, существует много тонкостей и настроек, предназначенных для получения максимальной гибкости этого механизма. В этом разделе рассматриваются конфигурационные директивы и связанные с сеансами функции, не рассмотренные ранее, и разъясняется их использование в реальных РНР-сценариях. Хотя некоторые связанные с сеансами директивы уже были рассмотрены, в приложении А можно найти полный список и описание каждой директивы, включая уже рассмотренные.<br />
Помимо конфигурационных директив в РНР также существуют функции, которые позволяют управлять поведением сеанса непосредственно внутри сценария, без модификации файла php. ini. В большинстве случаев эти функции имеют имена в точности соответствующие конфигурационным директивам. Например, для того чтобы динамически настроить директиву session. cache_limiter из PHP-сценария, можно использовать функцию session_cache_limiter (). Полное описание всех этих функций можно найти в руководстве по РНР.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/nastrojka-podderzhki-seansa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Функция validate ()</title>
		<link>http://mambo-phpshop.net/2008/09/15/funkciya-validate/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/funkciya-validate/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:39:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Усовершенствованные технологии использования форм]]></category>

		<category><![CDATA[Tabini]]></category>

		<category><![CDATA[validate]]></category>

		<category><![CDATA[изображения]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=146</guid>
		<description><![CDATA[После отправки формы нужно убедиться в правильности данных, проверив все цифровые подписи. Для того чтобы это сделать, необходимо создать функцию validate (). Эта функция имеет следующий синтаксис:
validate(Sinput, Ssecret)
где Sinput является ссылкой на соответствующий суперглобаги>ный массив ($_GET, S_POST и так далее), Ssecret представляет секретную строку, используемую для генерации подписи (в данном случае, строку определенную как PROTECTED_KEY). [...]]]></description>
			<content:encoded><![CDATA[<p>После отправки формы нужно убедиться в правильности данных, проверив все цифровые подписи. Для того чтобы это сделать, необходимо создать функцию validate (). Эта функция имеет следующий синтаксис:<br />
validate(Sinput, Ssecret)<br />
где Sinput является ссылкой на соответствующий суперглобаги>ный массив ($_GET, S_POST и так далее), Ssecret представляет секретную строку, используемую для генерации подписи (в данном случае, строку определенную как PROTECTED_KEY). В огличие от protect (), котора<span id="more-146"></span>я является довольно простой функцией, функция validate () гораздо сложнее по нескольким причинам. Во-первых, должно быть выполнено несколько различных проверок, для того чтобы предусмотреть все возможные попытки злоумышленника манипулировать данными, включая (но не ограничиваясь) следующие:<br />
• Изменение одного или нескольких защищенных значений.<br />
• Изменение одной или нескольких защищенных подписей.<br />
• Удаление одного или нескольких защищенных значений или подписей.<br />
Чтобы определить, удалял или изменял пользователь защищенные значения, функция validated должна знать, какие значения предполагалось защищать. Дтя этого функция validate () ищет скрытые объекты (и их контрольные суммы), атрибут МАМЕ которых является protected_list. Значение этого скрытого элемента является сериализованным массивом, содержащим имена защищенных ключей. Если этот параметр не найден, функция validated проверяет все параметры за следующими исключениями:<br />
• Если элемент формы имеет имя submit.<br />
• Если имя элемента формы оканчивается на ^checksum.<br />
НА ЗАМЕТКУ -<br />
Если вас удивляет то, что функция validated во время проверки игнорирует элементы формы с именем submit, имейте в виду, что это происходит, когда форма обрабатывается тем же сценарием, который ее отображает. В таком случае в форму часто включается скрытый элемент с именем &#8220;submit&#8221;, чтобы дать понять сценарию, что тот должен обработать форму, а не отображать ее.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/funkciya-validate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CHECKED</title>
		<link>http://mambo-phpshop.net/2008/09/15/checked/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/checked/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:14:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[ОСНОВЫ HTML форм]]></category>

		<category><![CDATA[CHECKED]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[Массивы]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=109</guid>
		<description><![CDATA[Подобно текстовому полю, поле ввода пароля позволяет организовать такой же однострочный ввод. Однако в отличие от только что описанного текстового поля, поле ввода пароля маскирует вводимые символы таким образом, что они не могут быть прочитаны с экрана. Чтобы создать ноле ввода пароля, установите значение атрибута TYPE дескриптора  равным PASSWORD. Поскольку текстовые поля и поля ввода [...]]]></description>
			<content:encoded><![CDATA[<p>Подобно текстовому полю, поле ввода пароля позволяет организовать такой же однострочный ввод. Однако в отличие от только что описанного текстового поля, поле ввода пароля маскирует вводимые символы таким образом, что они не могут быть прочитаны с экрана. Чтобы создать ноле ввода пароля, установите значение атрибута TYPE дескриптора  равным PASSWORD. Поскольку текстовые поля и поля ввода пароля принимают один и тот же набор атрибутов, обратитесь к табл. 4.2, чтобы просмотреть набор допустимых атрибутов для полей ввода пароля. Ниже представлен пример использования поля пароля.<br />
Листинг 4.2. Создание поля ввода пароля в HTML_</p>
<p>NAME=&#8221;тураssword&#8221;<br />
VALUE=&#8221;Bbi не сможете прочесть это в Сраузере&#8221;&gt;<br />
Элементы переключателя и флажка<br />
Один из методов, предназначенных для того, чтобы позволить пользователям выбирать один пункт из списка допустимых, предполагает использование нереключате-лей. В HTML переключатель может быть создан установкой значения атрибута TY2E дескриптора  равным RADIO, Элемент переключателя допускает только три атрибута: NAME, VALUE и CHECKED. Когда вы имеете дело с переключателями, необходимо принимать во внимание следующие моменты:<br />
• Для того чтобы набор переключателей работал правильно как единая группа (то есть только один из них мог быть отмечен), каждый переключатель в наборе должен иметь одно и то же значение атрибута NAME,<br />
• Атрибуту CHECKED не присваивается значение, и только один переключатель в группе может иметь этот атрибут (см. листинг 4.3).<br />
Также следует отметить, что атрибут VALUE не отображается в браузере, но вместо этого передается как значение при отправке данных формы. В листинге 4.3 переключатель используется для выбора пользователем любимого вида спорта.<br />
Листинг 4.3. Создание группы переключателей в HTML<br />
Флажки подобны переключателям, но позволяют отмечать любое количество из представленных позиций. Флажок создается установкой значения атрибута TYPE в дескрипторе  равным CHECKBOX. В отличие от переключателей, здесь не требуется устанавливать одинаковые значения атрибута NAME для всей группы, и не действует ограничение на количество элементов группы, снабженных атрибутом CHECKED,<br />
Флажки, однако, имеют тот же набор атрибутов, что и переключатели (NAME, VALUE и CHECKED), В листинге 4,4 с помощью флажков пользователи могут отметить виды спорта, которые они предпочитают смотреть по телевизору.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/checked/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Резюме</title>
		<link>http://mambo-phpshop.net/2008/09/15/rezyume/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/rezyume/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:12:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Именованные шаблоны]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[Массивы]]></category>

		<category><![CDATA[поля]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=105</guid>
		<description><![CDATA[Когда вы разберетесь, как работают регулярные выражения, они станут для вас самым важным изобретением после колеса. Однако вы обнаружите, что стать мастером в их применении — это длительный и трудный процесс, который потребует много времени, прежде чем представление о том, как они работают и как их применять укоренится в вашем мозгу.
Вообще говоря, наиболее сложный аспект [...]]]></description>
			<content:encoded><![CDATA[<p>Когда вы разберетесь, как работают регулярные выражения, они станут для вас самым важным изобретением после колеса. Однако вы обнаружите, что стать мастером в их применении — это длительный и трудный процесс, который потребует много времени, прежде чем представление о том, как они работают и как их применять укоренится в вашем мозгу.<br />
Вообще говоря, наиболее сложный аспект применения регулярных выражений — это их отладка, поскольку РНР не предоставляет никаких средств для ее выполнения, и язык сам по<span id="more-105"></span> себе не предусматривает никакой техники поиска ошибок (таких как печать результатов на промежуточных стадиях). В результате наилучшим способом отладки регулярных выражений является правильное из написание. Подход, который рекомендуется — начинать регулярное выражение с простого &#8220;ядра&#8221; и добиваться, чтобы оно работало без проблем. Затем можно шаг за шагом усложнять его, каждый раз проверяя работоспособность, до тех нор, пока не получится ожидаемый результат. Поступая подобным образом, гораздо легче сохранить ситуацию под контролем и не потерять контроль над тем, что делает ваше выражение.<br />
Другой важной вещью, которую следует понимать относительно регулярных выражений — это то, что они не являются панацеей от всех бед. Регулярные выражения работают медленнее, чем функции прямой подстановки строк, и потому должны применяться только тогда, когда последние не могут выполнить необходимую работу. &#8216;И, наконец, регулярные выражения Perl часто гораздо быстрее их POSIX-аналогов. В результате, даже несмотря на то, что они несколько более сложны и требуют больше времени для овладения, вы должны рассматривать возможность их применения настолько часто, насколько это возможно.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/rezyume/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Модификаторы PCRE</title>
		<link>http://mambo-phpshop.net/2008/09/15/modifikatory-pcre/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/modifikatory-pcre/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:12:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Именованные шаблоны]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[PCRE]]></category>

		<category><![CDATA[Массивы]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=103</guid>
		<description><![CDATA[Ранее говорилось, что вам нужно указывать разделители для PCRE. Если это вызывает удивление, то вот объяснение: в PCRE введена концепция &#8220;модификаторов&#8221;, ко* торые могут быть добавлены к регулярному выражению для изменения поведения компилятора и/или интерпретатора регулярных выражений. Модификатор всегда добавляется в конец выражения, сразу после разделителя. Например, в следующем регулярном выражении:
/test/i
последнее i — это модификатор.
Существует [...]]]></description>
			<content:encoded><![CDATA[<p>Ранее говорилось, что вам нужно указывать разделители для PCRE. Если это вызывает удивление, то вот объяснение: в PCRE введена концепция &#8220;модификаторов&#8221;, ко* торые могут быть добавлены к регулярному выражению для изменения поведения компилятора и/или интерпретатора регулярных выражений. Модификатор всегда добавляется в конец выражения, сразу после разделителя. Например, в следующем регулярном выражении:<br />
/test/i<br />
последнее i — это модификатор.<span id="more-103"></span><br />
Существует множество различных модификаторов. Вероятно, наиболее часто используемым является i, который заставляет обрабатывать регулярное выражение независимо от регистра. Рассмотрим пример, как это работает.<br />
<?php<br />
$s = &#8216;Сегодня отличный день&#8217;;<br />
echo [pregjnatch (&#8217;/ОТличНьЛ/i&#8217;, $s) ? &#8216;СОВПАДАЕТ&#8217;  : &#8216;НЕ СОВПАДАЕТ&#8217;)  . &#8220;\п&#8221;;<br />
?><br />
Если выполнить этот сценарий, то он выведет слово СОВПАДАЕТ, означающее, что сравнение прошло успешно, так как модификатор i инициирует сравнение без учета регистра.<br />
Другой часго используемый и чрезвычайно мощный модификатор — это е, который, будучи примененным в сочетании с 1, вынуждает компилятор регулярных выражений интерпретировать параметр replacement не как простую строку, а как РНР-выражеиие, которое выполняется и его результат используется в качестве строки замены.<br />
Н)тже показан пример, который демонстрирует, насколько мощный этот модификатор.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/modifikatory-pcre/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Marco&#8221; па &#8220;Tabini&#8221;</title>
		<link>http://mambo-phpshop.net/2008/09/15/87/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/87/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:04:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Базовый синтаксис РНР]]></category>

		<category><![CDATA[Tabini]]></category>

		<category><![CDATA[Основы]]></category>

		<category><![CDATA[синтаксиса]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=87</guid>
		<description><![CDATA[Практического компьютерного программирования. Спросите у любого программиста — и вы меете большие шансы услышать, что он в той или иной мере сталкивался с проблемами при их использовании (или, хуже того, вовсе их избегает).
На самом деле регулярные выражения, даже достаточно замысловатые, не так уж сложны для понимания. В основе своей они представляют собой способ описания шаблонов [...]]]></description>
			<content:encoded><![CDATA[<p>Практического компьютерного программирования. Спросите у любого программиста — и вы меете большие шансы услышать, что он в той или иной мере сталкивался с проблемами при их использовании (или, хуже того, вовсе их избегает).<br />
На самом деле регулярные выражения, даже достаточно замысловатые, не так уж сложны для понимания. В основе своей они представляют собой способ описания шаблонов (patterns) текста с использованием единого набора строк. В отличие от простой операции поиска-замены, такой как замена всех вхождений &#8220;Marco&#8221; па &#8220;Tabini&#8221;, регулярные выражения <span id="more-87"></span>обеспечивают большую гибкость, например, поиск всех вхождений букв &#8220;Маг&#8221;, за которыми следует &#8220;со&#8221; или &#8220;г&#8221; и так далее.<br />
Впервые регулярные выражения были описаны в пятидесятых годах прошлого века математиком по имени Клин (S. С. Kleene), который формализовал модели, предложенные Уорренном Маккалохом (Warenn McCuloch) и Уолтером Питтсом (Waiter Pitts) при описании работы нервной системы. Регулярные выражения, однако, тогда не использовались в компьютерных науках, пока Кен Томпсон (Ken Thompson), впоследствии ставший одним из авторов первоначальной версии операционной системы UNIX, не задействовал их в качестве средства поиска и замены в своем текстовом редакторе qed.<br />
Регулярные выражения, таким образом, протоптали себе дорожку в среду UNIX (и позже в стандарт POSIX), а также в Perl, где стали одной из самых сильных сторон этого языка. В настоящий момент РНР поддерживает оба стандарта. Идея состоит в том, чтобы программисты на Perl почувствовали себя как дома, а начинающие могли использовать более простые выражения POSIX.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/87/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Использование массива как сортируемой таблицы</title>
		<link>http://mambo-phpshop.net/2008/09/15/ispolzovanie-massiva-kak-sortiruemoj-tablicy/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/ispolzovanie-massiva-kak-sortiruemoj-tablicy/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 08:57:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Массивы]]></category>

		<category><![CDATA[Tabini]]></category>

		<category><![CDATA[изображения]]></category>

		<category><![CDATA[синтаксиса]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=77</guid>
		<description><![CDATA[Листинг 2.13. Сценарий вывода случайно выбранного изображения С применением функции array_rand ()

Сценарий вывода случайно выбранного изображения

]]></description>
			<content:encoded><![CDATA[<p>Листинг 2.13. Сценарий вывода случайно выбранного изображения С применением функции array_rand ()<br />
<HTML><br />
<НЕАП><Т1ТьЕ>Сценарий вывода случайно выбранного изображения</Т1ТТ,Е></НЕА0><br />
<BODY><br />
<?php<span id="more-77"></span><br />
srand((double)microtime()*1000000) ;<br />
Simages = arrayCimagel.jpg&#8217;,  &#8216;image2.jpg&#8217;,  4mage3.jpg&#8217;); $rlmage = array_rand(Simages)<br />
?><br />
<IMG SRC="<?php echo Simages[Srlmage]; ?>&#8220;><br />
</B0DY><br />
</HTML></p>
<p>Помимо использования массивов как простых списков, массивы РНР также весьма удобны, когда вы имеете дело с данными в форме таблиц. В этом разделе вы научитесь реализовывать простые таблицы средствами массивов РНР. Затем будет рассмотрен более сложный пример разработки базирующихся на массивах таблиц, которые могут быть отсортированы по нужной колонке с помощью PHP-функций сортировки массивов. Рассмотрим табл. 2.1.<br />
Таблица 2.1.<!--more--><br />
Имя животного Имя владельца Вес ЖивотноеПроблема со структурой массива состоит в том, что она никак не помогает в сортировке по определенной колонке. Как показано в листинге 2.15, чтобы воспользоваться встроенной функциональностью, каждая колонка должна сохраняться в отдельном массиве (сохраняя ключевые значения таким образом, чтобы индекс 1 для каждого массива соответствовал правильному значению).<br />
Листинг 2.15, Создание сортируемой таблицы с помощью массивов __<br />
<?php $Р $Р'<br />
&#8216;Кошкина&#8217;);<br />
?><br />
>hp<br />
$petshack['name') ■ array('Биы', 'Василий', 'Рекс', 'Бастер', 'Алиса'); $petshack['owner'] = array(&#8217;Иванов&#8217;, &#8216;Петрова&#8217;, &#8216;Сидоров&#8217;, &#8216;Собакевич&#8217;, &#8216;Кошкина&#8217;);<br />
$petshack['weight'] = array(9, 4, 1, 23, 14);<br />
$petshack(&#8217;animal&#8217;] = array(&#8217;Собака&#8217;,  &#8216;Кот&#8217;,  &#8216;Игуана&#8217;,  &#8216;Собака&#8217;,<br />
&#8216;Собака1);<br />
Сравните листинги 2.14 и 2.15. Первая вещь, которая, вероятно, сразу заметна, — это то, что второй листинг значительно понятнее первого. Более того, поскольку каждая колонка таблицы представлена отдельным массивом РНР, каждая колонка также может быть отсортирована с применением встроенных функций работы с массивами. Для выполнения этой сортировки можно воспользоваться PHP-функцией asort ().<br />
Несмотря на то что разработчику на РНР доступно множество функций сортировки, эта конкретная функция выбирается на основании одной важной детали — она поддерживает ассоциативные пары ключ/значение (см, описание array_filter ()asort (} выглядит следующим образом:<br />
asort(Sinput [, $sort_flag));<br />
НА ЗАМЕТКУ -<br />
Функция asort () упорядочивает массив от меньшего значения к большему (или в алфавитном порядке — от А до 2). Если требуется противоположное поведение, можно использовать функцию arsort (), которая аналогична asort ().<br />
Sinput представляет массив, который нужно сортировать, a Ssort_flag — это необязательный параметр (константа), указывающим тип выполняемой сортировки. Обратите внимание, что константы, значения которых принимает параметр Ssort^flag, не являются переменными РНР, Это константы, предопределенные в РНР (больше всего это похоже на то, что можно определить с помощью директивы define). Три возможных знзчения параметра Ssort_f lag перечислены в табл. 2.2.<br />
Таблица 2.2. константы asort ()<br />
Константа	Описание<br />
SORT REGULAR SORT_NUMERIC SORT_STRING	Сравнивает элементы нормально (по умолчанию). Сравнивает элементы кзк числовые значения. Сравнивает элементы как строчные значения.<br />
При выполнении функция asort () отсортирует массив Sinput так, как указано флагом 5sort_f lag (возвращаемого значения нет).<br />
Использование функции asort () для сортировки и поддержки вашей табличной структуры становится относительно простой задачей, поскольку каждая колонка вашей таблицы хранится в отдельном массиве. Примените asort () для сортировки по любой из колонок, а затем с помощью foreach () отобразите отсортированные данные в HTML-таблице, как показано в листинге 2.16, в котором выполняется сортировка таблица по колонке веса.<br />
Листинг 2.16. Сортировка таблицы, хранящейся в массивах, с использованием asort ()<br />
<HTML><br />
<НЕАО><Т1ТЬЕ>Сортировка массивов</Т1ТьЕх/НЕАп><br />
<BODY><br />
<CENTER><br />
<Н2>Сортировка массивов с использованием функции <code>asort()</code></H2> <?php<br />
Spetshack('name'] = array('Бим', 'Василий', 'Рекс', 'Бастер1, 'Алиса'); Spetshack('owner1] = array('Иванов 1,   'Петрова',   'Сидоров',  'Собакевич1,<br />
&#8216;Кошкина&#8217;};<br />
Spetshack['weight'] щ array(20, 10, 3, 54, 30);<br />
Spetshack!&#8217;animal&#8217;] = array(&#8217;Собака&#8217;, &#8216;Кот&#8217;, &#8216;Игуана&#8217;, &#8216;Собака&#8217;, &#8216;Собака&#8217;); /■* Сортировать по весу */asort(Spetshack!&#8217;weight&#8217;j, SORT_NUMERIC);<br />
?><br />
<TABLE> <TR><br />
<ТБ>Имя животного</ТО<br />
<ТО>Владелец животного</ТО><br />
<TD>Bec гшвотного</ТО><br />
<ТОВид животного</ТО> </TR> <?php<br />
foreach(Spetshack['weight'] as $key=>Sweight)  { echo &#8220;<TR>&#8220;;<br />
echo &#8220;<TD>(Spetshack['name'][Skey]}</TD><TD>(Spetshack['owner'][Skey]) </TD>&#8220;;<br />
echo &#8220;<TD>(Sweight]</TDXTD>($petshack['animal'][Skey]}</TD>&#8220;; echo &#8220;</TR>&#8220;;<br />
)<br />
?><br />
</TABLE> </CENTER> </BODY> </HTML><br />
Заменяя массив, передаваемый фу) 1кции asort () (и соответственно изменяя foreach () для прохождения по массиву, который должен быть отсортирован), этот сценарий можно модифицировать с минимальными затратами для выполнения сортировки по любой из колонок.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/ispolzovanie-massiva-kak-sortiruemoj-tablicy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Директива #5,2</title>
		<link>http://mambo-phpshop.net/2008/09/15/direktiva-52/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/direktiva-52/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 08:44:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Форматирование строк]]></category>

		<category><![CDATA[времени]]></category>

		<category><![CDATA[Массивы]]></category>

		<category><![CDATA[образом]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=63</guid>
		<description><![CDATA[Вы можете модифицировать вывод mone у_ for mat () для более полного соответствия вашим потребностям. Например, вы можете использовать необязательные флаги для изменения минимальной длины результата:

Директива #5,2 в спецификаторе формата указывает, что результирующая строка должна иметь не менее 5 целых и 2 дробных десятичных разряда. Часть =0 означает, что минимальная длина целой/дробной части должна достигаться [...]]]></description>
			<content:encoded><![CDATA[<p>Вы можете модифицировать вывод mone у_ for mat () для более полного соответствия вашим потребностям. Например, вы можете использовать необязательные флаги для изменения минимальной длины результата:<br />
<7php<br />
setlocale (LC_MONETARY,  &#8216;enJJS&#8217;);<br />
echo money_format (1%=030#5.2i1, 1000);<br />
?><span id="more-63"></span><br />
Директива #5,2 в спецификаторе формата указывает, что результирующая строка должна иметь не менее 5 целых и 2 дробных десятичных разряда. Часть =0 означает, что минимальная длина целой/дробной части должна достигаться заполнением недостающих позиций нулями. Фактически вы можете использовать любой символ — например, звездочка (*) часто применяется при печати чеков. И, наконец, последняя часть 30 используется для того, чтобы задать, что поле должно быть, по меньшей мере, 30 символов длиной. В результате получается следующий вывод:<br />
USD 01,000.00<br />
Как видите, символ разделения групп (запятая) не входит в общее число разрядов, указанное флагами.<br />
Возможности money_format () не ограничиваются этим. Вы также можете использовать флаг ! для подавления вывода идентификатора валюты и флаг А для предотвращения использования разделителей групп. Это означает, что вы можете использовать money format () как замену number_format() несмотря на то, что она не имеет такой гибкости, как последняя.<br />
Если вы удивляетесь, зачем вообще заботиться обо всем этом, вспомните, что для того, чтобы изменить способ форматирования number_f ormat () для использования региональных стандартов по вашему выбору, необходимо изменить значение локального параметра LC_NUMBERIC, что затронет числовой ввод, поступаемый извне (включая базы данных). То есть, например, если ваша база данных работает в региональном стандарте, отличном от того, что должен использоваться при отображении результата пользователю (как это и нужно большинству в распределенной среде), вы постоянно должны вызывать setlocale () перед тем, как выполнить number^format () для обеспечения того, чтобы данные, которые вы читаете и пишете в базу данных, были сформатированы корректно.<br />
С другой стороны, если вы используете currency_f ormat () для печати числовых значений, вам понадобтггся только единожды изменить региональную установку LC_MONETARY и оставить ее неизменной до конца сценария.<br />
И, наконец, следует отметить, что параметр $f ormat функции money_format () также может содержать текст, расширяемый до действительной спецификации формата вывода функции. Дополнительный текст будет возвращен функцией &#8220;как есть&#8221; (но не забудьте отменить каждый символ процента, используя %%). Ниже показан пример.<br />
<?php<br />
setlocale (LC_MONETARY,   1en_US&#8217;);<br />
echo money_format (&#8217;Общая сумма %n, оплачено 50%% после подписи контракта&#8217; . &#8216; и 50%% по завершении проекта&#8217;, 1000);<br />
?>Этот сценарий выведет следующую строку:<br />
Общая сумма $1,000.00, оплачено 50% после подписи контракта и 50% по завершении проекта.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/direktiva-52/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Альтернативы printf()</title>
		<link>http://mambo-phpshop.net/2008/09/15/alternativy-printf/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/alternativy-printf/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 08:43:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Форматирование строк]]></category>

		<category><![CDATA[времени]]></category>

		<category><![CDATA[Массивы]]></category>

		<category><![CDATA[образом]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=57</guid>
		<description><![CDATA[Несмотря на то, что функция printf () чрезвычайно удобна, она также требует ощутимых вычислительных ресурсов. В результате вы должны стараться ограничивать ее применение, насколько это возможно, полагаясь вместо нее на другие функции РНР, предназначенные для выполнения специфических задач.Например, вы можете использовать функцию numberf ormat () для форматирования числа в соответствии с количеством параметров:
number_format
■ i _ [...]]]></description>
			<content:encoded><![CDATA[<p>Несмотря на то, что функция printf () чрезвычайно удобна, она также требует ощутимых вычислительных ресурсов. В результате вы должны стараться ограничивать ее применение, насколько это возможно, полагаясь вместо нее на другие функции РНР, предназначенные для выполнения специфических задач.Например, вы можете использовать функцию numberf ormat () для форматирования числа в соответствии с количеством параметров:<br />
number_format<span id="more-57"></span><br />
■ i _    •* у;-; ■-     З**тип0 Ы г •: ■<br />
Snumber, [Sdecimals, [$point_separator, Sthousand_separator]]<br />
) ;<br />
Эта функция форматирует Snumber, используя как минимум Sdecimals десятичных разрядов, Spoint_separator в качестве разделителя между целой и дробной частью, а также Sthousand_separator в качестве разделителя групп тысяч. Если Sdecimals не указан, десятичные разряды после точки не отображаются. Если Spoint_separator и $thousand_separator не заданы, интерпретатор применяет, соответственно, точку (,) и запятую (,).<br />
Например, в таких странах, как Великобритания и Соединенные Штаты, числа форматируются с применением запятой для разделения групп тысяч, а точка применяется для отделения целой и дробной части. Некоторые европейские страны, например, Италия, используют противоположную нотацию: точки разделяют группы тысяч, а запятые — начало дробной части. Вот как можно использовать number_f ormat () для удовлетворения обоих требований:<br />
<?php<br />
$а - 1232322210.44;<br />
echo number_format (Sa, 2); // Английский формат<br />
echo &#8220;\n&#8221;;<br />
echo number_format (Sa, 2, &#8216;.&#8217;);   // Итальянский формат<br />
echo &#8220;\n&#8221;;<br />
?><br />
Предыдущий пример даст такой вывод:<br />
1,232,322,210.44 1.232.322.210,44</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/alternativy-printf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ссылки, используемые в функциях</title>
		<link>http://mambo-phpshop.net/2008/09/15/ssylki-ispolzuemye-v-funkciyax/</link>
		<comments>http://mambo-phpshop.net/2008/09/15/ssylki-ispolzuemye-v-funkciyax/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 08:37:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Многофайловые сценарии PHP]]></category>

		<category><![CDATA[Строки]]></category>

		<category><![CDATA[сходства]]></category>

		<category><![CDATA[функциях]]></category>

		<guid isPermaLink="false">http://mambo-phpshop.net/?p=39</guid>
		<description><![CDATA[Поскольку обе переменные — и Smyvar. и Smyref — представляют одни и те же данные, то если вы разрушите любую из них с помощью PHP-функции unset (), данные не будут потеряны. Оставшаяся переменная будет по-прежнему ссылаться на те же данные. И это справедливо независимо от того, сколько ссылок на одну переменную будут разрушено. До тех [...]]]></description>
			<content:encoded><![CDATA[<p>Поскольку обе переменные — и Smyvar. и Smyref — представляют одни и те же данные, то если вы разрушите любую из них с помощью PHP-функции unset (), данные не будут потеряны. Оставшаяся переменная будет по-прежнему ссылаться на те же данные. И это справедливо независимо от того, сколько ссылок на одну переменную будут разрушено. До тех пор, пока хотя бы одна из переменных ссылается на элемент данных, он остается доступным в сценарии через эту переменную.<span id="more-39"></span></p>
<p>Ссылки также могут использоваться в сочетании с функциями. Например, рассмотрим ситуацию, в которой желательно возвращать более одного значения из функции. Вернуть более одного значения с помощью оператора return невозможно, к тому же может быть нежелательным использование глобальных переменных. С помощью ссылок вы можете вернуть столько значений, сколько нужно, причем в относительно понятной манере.<br />
Чтобы определить параметр функции как ссылку, предварите имя переменной параметра префиксом &#038; и передавайте функции ссылку при вызове, как показано на листинге 1.28,<br />
Листинг 1.28. Передача параметра по ссылке в рнр_<br />
<?php<br />
function reference_test(Svar, sSresult, sSresult2)  { Sresult = &#8220;Это возвращаемое значение #1&#8243;; Sresult2 = &#8220;Вы передали Svar как параметр&#8221;; return 42;<br />
}<br />
Sres ■ referencetest(10, SSresl, &#038;Sres2); echo &#8220;Значение \Sres равно ,Sres,<BR>&#8220;; echo &#8220;Значение \Sresl равно &#8216;Sresl1<BR>&#8220;; echo &#8220;Значение \Sres2 равно &#8216;Sres2&#8242;<BR>&#8220;;<br />
?><br />
Это выдаст такой результат: Значение Sres равно &#8216;42&#8242;<br />
Значение Sresl равно &#8216;Это возвращаемое значение #1&#8242; Значение Sres2 равно &#8216;Вы передали 10 как параметр&#8217;<br />
Чтобы лучше понять, как работает этот сценарий, пройдем его строка за строкой. Во-первых, объявлено, что функция ref erence_test () принимает три параметра. Первый параметр Sval — это стандартный параметр РНР, в то время как оставшиеся два — Sresult и Sresult2 — являются параметрами-ссылками. Когда вызывается функция ref erence_test {), ей передается три параметра. Первый — константное значение 10, а остальные два — ссылки на переменные Sresl и Sres2. При вызове устанавливается связь между переменными Sresult 1 и Sresult2 с одной стороны и Sresl и Sres2 — с другой (поскольку они друг на друга ссылаются). Поэтому, когда внутри функции изменяются значения Sresult и 5result2, связанные с ними переменные Sresl и Sres2 также изменяются. Функция по-прежнему возвращает целую константу 42, которая затем, как и ожидается, присваивается переменной Sres.</p>
]]></content:encoded>
			<wfw:commentRss>http://mambo-phpshop.net/2008/09/15/ssylki-ispolzuemye-v-funkciyax/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
