<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Два студента пишут лабы &#187; Программирование PHP</title>
	<atom:link href="http://www.studcode.ru/archiv/category/konspekty/programmirovanie-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.studcode.ru</link>
	<description>Конспекты лекций, самостоятельные работы по  delphi, с++, php. Курсовые проекты. Все что мы сделали вы можете скачать без проблем!</description>
	<lastBuildDate>Wed, 27 Oct 2010 15:15:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Трансляция списков PHP</title>
		<link>http://www.studcode.ru/archiv/translyaciya-spiskov-php/</link>
		<comments>http://www.studcode.ru/archiv/translyaciya-spiskov-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:47:42 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=488</guid>
		<description><![CDATA[Трансляция списков
Механизм трансляции полей формы в РНР работает приемлемо, когда среди  них нет полей с одинаковыми именами. Если же таковые встречаются, то в  переменную записываются только данные последнего встретившегося поля. Это довольно-таки неудобно при работе, н-р, со списком множественного выбора
:


First
Second
Third

 

В таком списке можем выбрать (подсветить) не одну, а сразу несколько строчек, используя [...]]]></description>
			<content:encoded><![CDATA[<p>Трансляция списков<br />
Механизм трансляции полей формы в РНР работает приемлемо, когда среди  них нет полей с одинаковыми именами. Если же таковые встречаются, то в  переменную записываются только данные последнего встретившегося поля. Это довольно-таки неудобно при работе, н-р, со списком множественного выбора<br />
<select multiple>:<br />
<code><br />
<select name=Sel multiple>
<option>First<br />
<option>Second<br />
<option>Third<br />
</select>
<p> </code><br />
<span id="more-488"></span><br />
В таком списке можем выбрать (подсветить) не одну, а сразу несколько строчек, используя клавишу <Ctrl> и щелкая по ним кнопкой мыши. Пусть выбрали First и Third. Тогда после отправки формы сценарию придет строка параметров Sel=First&#038;Sel=Third, и в переменной $Sel окажется,  конечно, только Third. Это не значит, что первый пункт потерялся и механизм трансляции в РНР работает некорректно. В РНР предусмотрена возможность давать имена полям формы в виде имени массива с индексами:<br />
<code><br />
<select name="Sel[]" multiple>
<option>First<br />
<option>Second<br />
<option>Third<br />
</select>
<p></code><br />
Теперь сценарию придет строка Sel[]=First&#038;Sel[]=Third, интерпретатор обнаружит, что надо создать &#8220;автомассив&#8221; (то есть массив, который не содержит пропусков, и у которого индексация начинается с нуля), и, действительно, создаст переменную $Sel типа массив, содержимое которого следующее: array(0=>&#8221;First&#8221;,l=>&#8221;Third&#8221;). В результате ничего не пропало — данные только слегка видоизменились. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/translyaciya-spiskov-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Трансляция переменных окружения и Cookies</title>
		<link>http://www.studcode.ru/archiv/translyaciya-peremennyx-okruzheniya-i-cookies/</link>
		<comments>http://www.studcode.ru/archiv/translyaciya-peremennyx-okruzheniya-i-cookies/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:45:26 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=483</guid>
		<description><![CDATA[Трансляция переменных окружения и Cookies
В переменные преобразуются не только все данные формы,   но  и   переменные  окружения   (включая  Query_String, Content_Length и многие другие), а также все Cookies.
Н-р, вот сценарий, который печатает IP-адрес пользователя, который его запустил, а также тип его браузера (эти данные хранятся в переменных окружения [...]]]></description>
			<content:encoded><![CDATA[<p>Трансляция переменных окружения и Cookies<br />
В переменные преобразуются не только все данные формы,   но  и   переменные  окружения   (включая  Query_String, Content_Length и многие другие), а также все Cookies.<br />
Н-р, вот сценарий, который печатает IP-адрес пользователя, который его запустил, а также тип его браузера (эти данные хранятся в переменных окружения REMOTE_USER и HTTP_USER_AGENT):<br />
<html><body><br />
Ваш IP-адрес: <?=$REMOTE_USER?><br />
Ваш браузер: <?=$HTTP_USER_AGENT?><br />
           </body></html><span id="more-483"></span><br />
Пo умолчанию трансляция выполняется в порядке ENVIRONMENT-01 POST-COOKIE, причем каждая следующая переменная как бы перекрыв предыдущее свое значение. Н-р, пусть есть переменная окружения A=10, параметр, поступивший из GET-формы А=20 и Cookie А= 30. В этом случае в переменную $A сценария будет записано 30, т.к. cookie перекрывает GET, a GET перекрывает переменные окружения. Так что, проверяя какую-либо переменную окружения VAR в сценарии (особенно если она касается вопросов, связанных с разграничением прав доступа — н-р, переменная содержит пароль), надо задуматься: а что, если злоумышленник запустит ваш сценарий вот так:<br />
http://www.somehost.com/foo.рhр?VAR=что_то_очень_нехорошее<br />
и старое значение переменной окружения VAR окажется стертым? К счастью, в таких ситуациях есть выход — достаточно воспользоваться функцией getenv(), чтобы прочитать значение переменной окружения с указанным именем, и только его — невзирая ни на какие другие данные. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/translyaciya-peremennyx-okruzheniya-i-cookies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Трансляция полей формы в переменные</title>
		<link>http://www.studcode.ru/archiv/translyaciya-polej-formy-v-peremennye/</link>
		<comments>http://www.studcode.ru/archiv/translyaciya-polej-formy-v-peremennye/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:43:01 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=478</guid>
		<description><![CDATA[Трансляция полей формы в переменные
Интерпретатор перед запуском сценария  сам занимается прямым разбором переменной окружения QUERY_STRING, в которой хранятся параметры сценария. Причем независимо от того, каким методом — GET или POST — воспользовался &#8220;браузер&#8221;. То есть, РНР сам определяет, какой метод был задействован (информация об этом доступна через переменную окружения REQUEST_METHOD), и получает данные либо [...]]]></description>
			<content:encoded><![CDATA[<p>Трансляция полей формы в переменные<br />
Интерпретатор перед запуском сценария  сам занимается прямым разбором переменной окружения QUERY_STRING, в которой хранятся параметры сценария. Причем независимо от того, каким методом — GET или POST — воспользовался &#8220;браузер&#8221;. То есть, РНР сам определяет, какой метод был задействован (информация об этом доступна через переменную окружения REQUEST_METHOD), и получает данные либо из QUERY_STRING, либо из стандартного входного потока. Это крайне удобно в любых CGI-сценариях.<br />
А именно, интерпретатор все данные из полей формы преобразует в глобальные одноименные переменные. В нашем случае значение поля name после начала работы программы будет храниться в переменной $name, а значе¬ние поля age — в переменной $аgе. То есть, не надо ничего ниоткуда &#8220;получать&#8221; — все уже установлено и распаковано из URL-кодировки.<br />
<span id="more-478"></span><br />
Окончательный сценарий hello.php сжался до таких размеров (окончательная версия):<br />
<html><body><br />
<? echo "Привет, $name!<br /> Я	знаю, Вам $аgе	лет!&#8221; ?>       </html></body><br />
Теперь его усовершенствуем — сделаем так, чтобы при запуске без параметров сценарий выдавал документ с формой, а при нажатии кнопки — выводил нужный текст. Самый простой способ определить, был ли сценарий запущен без параметров — проверить, существует ли переменная с именем, совпадающим с именем кнопки отправки. Если такая переменная существует, то, очевидно, что пользователь запустил программу, нажав на кнопку. Здесь применим инструкцию if, которая еще не рассматривалась (усовершенствованная версия):<br />
<code><html><body><br />
<?if(!@$doGo) {?></p>
<form action="<?=$SCRIPT_NAME?>"><br />
  Введите имя:<br />
<input type=text name="name">
  Введите возраст:<br />
<input type=text name="age"></p>
<input type=suhmit name="doGo" vа1ие="Нажмите кнопку!">
  </form>
<p><?} else {?><br />
  Привет, <?=$name?>!<br />
  Я знаю, Вам <?=$age?> лет!<br />
<?}?><br />
</html></body></code><br />
Из этого примера можем почерпнуть еще один удобный прием, который пока не рассматривался. Это конструкция <?=выражение?>. Она является ничем иным, как просто более коротким обозначением для <?echo(выражение)?>, и предназначена для того, чтобы вставлять величины прямо в HTML-страницу.<br />
В параметре action тэга<br />
<form> мы не задали явно имя файла сценария, а извлекли его из переменной SCRIPT_NAME (которая устанавливается автоматически перед запуском сценария). Это позволило не &#8220;привязываться&#8221; к имени файла, т. е. теперь можем его в любой момент переименовать без потери функциональности.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/translyaciya-polej-formy-v-peremennye/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Получение данных из форм PHP</title>
		<link>http://www.studcode.ru/archiv/poluchenie-dannyx-iz-form-php/</link>
		<comments>http://www.studcode.ru/archiv/poluchenie-dannyx-iz-form-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:42:09 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=476</guid>
		<description><![CDATA[Передача данных командной строки
Чтобы начать писать простейшие сценарии на РНР типа “Hello world, сейчас 10 часов утра” нашим сценариям будет недоставать одного— интерактивного взаимодействия с пользователем.
Надо написать сценарий, который принимает в параметрах имя и возраст пользователя и выводит: &#8220;Привет, ! Я знаю, вам  лет!&#8221;.
Cначала рассмотрим наиболее простой способ передачи имени и возраста cценарию — [...]]]></description>
			<content:encoded><![CDATA[<p>Передача данных командной строки<br />
Чтобы начать писать простейшие сценарии на РНР типа “Hello world, сейчас 10 часов утра” нашим сценариям будет недоставать одного— интерактивного взаимодействия с пользователем.<br />
Надо написать сценарий, который принимает в параметрах имя и возраст пользователя и выводит: &#8220;Привет, <имя>! Я знаю, вам <возраст> лет!&#8221;.<br />
Cначала рассмотрим наиболее простой способ передачи имени и возраста cценарию — непосредственный набор их в URL после знака ? — н-р, в формате name=имя&#038;аgе=возраст. Но довольно утомительно набирать эту строку вручную. Всякие там ?, &#038;, %&#8230; Существуют удобные возможности языка HTML, которые, конечно, поддерживаются всеми браузерами.<br />
Пусть у нас на сервере в корневом каталоге есть сценарий на РНР под названием hello.php. Наш сценарий распознает 2 параметра: name и аgе. Он должен отработать и вывести следующую HTML-страницу:<br />
<html> <body><br />
Привет, name! Я знаю, Вам аgе лет!<br />
</body> </html><br />
Только нужно name и аgе заменить на соответствующие значения. Таким образом, если задать в адресной строке браузера<br />
http://www.somehost.com/script.cgi?name=Vasya&#038;age=20<br />
должны получить страницу с требуемым результатом.<br />
<span id="more-476"></span><br />
Как только задача осознана, можно приступать к ее решению. Но прежде бывает полезно решить аналогичную, но более простую задачу.<br />
Нам в сценарии надо получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию. Для этого можно проанализировать переменную окружения QUERY_STRING, которая в РНР доступна под именем $QUERY_STRING. Напишем небольшой п-р, чтобы это проиллюстрировать (вывод параметров командной строки):<br />
<html><body><br />
<?<br />
echo "Данные из командной строки: $QUERY_STRING";<br />
?><br />
</body></html><br />
Если теперь запустим этот сценарий из браузера (перед этим сохранив его в файле test.php в корневом каталоге сервера) примерно вот таким образом:<br />
http://www.myhoat.com/test.php?aaa+bbb+ccc+ddd<br />
 то получим документ следующего содержания:<br />
Данные из командной строки: aaa+bbb+ccc+ddd<br />
Заметим, что URL-декодирование символов не произошло: строка $QUERY_STRING, как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.<br />
Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной $QUERY_STRING перед тем, как управление будет передано сценарию. Он разбивает ее по пробельным символам (в нашем примере пробелов нет, их заменяют символы +, но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv, который впоследствии может быть проанализирован в программе.<br />
Все же массив $argv используется при программировании на РНР крайне редко, что связано с гораздо большими возможностями интерпретатора по разбору данных, поступивших от пользователя. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/poluchenie-dannyx-iz-form-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сериализация PHP</title>
		<link>http://www.studcode.ru/archiv/serializaciya-php/</link>
		<comments>http://www.studcode.ru/archiv/serializaciya-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:39:26 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=468</guid>
		<description><![CDATA[Предположим, что нужно сохранить какой-то массив (причем неизвестно заранее, сколько у него измерений) в файле, чтобы потом, при следующем запуске сценария, его аккуратно загрузить и продолжить работу.
Функция Serialize () возвращает строку, являющуюся упакованным экви¬валентом некоего объекта $Obj, переданного во втором параметре.
string Serialize(mixed $0bj)
При этом совершенно не важно, что это за объект: массив, целое число.

Например:
$A=array("a"=>"aа", "b"=>"bb", [...]]]></description>
			<content:encoded><![CDATA[<p>Предположим, что нужно сохранить какой-то массив (причем неизвестно заранее, сколько у него измерений) в файле, чтобы потом, при следующем запуске сценария, его аккуратно загрузить и продолжить работу.<br />
Функция Serialize () возвращает строку, являющуюся упакованным экви¬валентом некоего объекта $Obj, переданного во втором параметре.<br />
string Serialize(mixed $0bj)<br />
При этом совершенно не важно, что это за объект: массив, целое число.<br />
<span id="more-468"></span><br />
Например:<br />
<code>$A=array("a"=>"aа", "b"=>"bb", "c"=>array("x"=>"xx"));<br />
$st=Serialize($A) ;<br />
echo $st;<br />
// выведется что-то типа нечто:<br />
//<br />
а:2:{s:l:"a";s:2:"aa";s:l:"b";s:2:"bb";s:l:"c";a:l:{s:1:"x";s:2:"xx";}}</code><br />
Функция Unserialize (), наоборот, принимает в лице своего параметра $st строку, ранее созданную при помощи Serialize (), и возвращает целиком объект, который был упакован.<br />
mixed Unserialize(string $st)<br />
Например:<br />
<!--more-->$a=array(1,2,3);<br />
$s=Serialize($a) ;<br />
$a=&#8221;bogus&#8221;;<br />
echo count($a);     // выводит 1<br />
$a=Unserialize($s) ;<br />
echo count($a);     // выводит 3<br />
Сериализовать можно не только массивы, но и вообще что угодно. Однако в большинстве случаев все-таки используются массивы. Ме¬ханизм сериализации часто применяется также и для того, чтобы сохранить какой-то объект в базе данных, и тогда без сериализации практически не обойтись.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/serializaciya-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Списки и строки PHP</title>
		<link>http://www.studcode.ru/archiv/spiski-i-stroki-php/</link>
		<comments>http://www.studcode.ru/archiv/spiski-i-stroki-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:38:13 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=464</guid>
		<description><![CDATA[Существуют функции для разбиения какой-либо строки на более мелкие части (н-р, эти части разделяются в строке каким-то специфическим символом типа &#124; ) &#8211; функция explode (), и, наоборот, слияния нескольких небольших строк в одну большую, причем не впритык, а вставляя между ни ми разделитель &#8211; implode ().
Функция explode () имеет следующий синтаксис:
list explode(string $token, string [...]]]></description>
			<content:encoded><![CDATA[<p>Существуют функции для разбиения какой-либо строки на более мелкие части (н-р, эти части разделяются в строке каким-то специфическим символом типа | ) &#8211; функция explode (), и, наоборот, слияния нескольких небольших строк в одну большую, причем не впритык, а вставляя между ни ми разделитель &#8211; implode ().<br />
Функция explode () имеет следующий синтаксис:<br />
<code>list explode(string $token, string $Str [, int $limit])</code><br />
Она получает строку, заданную в ее втором аргументе, и пытается найти в ней подстроки, равные первому аргументу. Затем по месту вхождения этих Подстрок строка &#8220;разрезается&#8221; на части, помещаемые в массив-список, кото¬рый и возвращается. Если задан параметр $limit, то учитываются только первые ( $limit – l ) участков &#8220;разреза&#8221;. Таким образом, возвращается список из не более чем $limit элементов. Это позволяет нам проигнорировать воз- можное наличие разделителя в тексте последнего поля, если мы знаем, что всего полей, скажем, 6 штук.<br />
Строкой разбиения может быть не только один символ, но и небольшая строка. Не надо путать только порядок следования аргументов при вызове функции.<br />
Функция implode () и ее синоним join() производят действие, в точности обратное вызову explode ().<br />
<code>string implode(string $glue, list $List) или<br />
string join(string $glue, list $List)</code><br />
Они берут ассоциативный массив (обычно это список) $List, заданный в ее первом параметре, и &#8220;склеивают&#8221; его значения при помощи &#8220;строки-клея&#8221; $g1ие во втором параметре. Вместо списка во втором аргументе можно передавать любой ассоциативный массив — в этом случае будут рассматриваться только его значения.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/spiski-i-stroki-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функции и операции работы с ассоциативными массивами</title>
		<link>http://www.studcode.ru/archiv/funkcii-i-operacii-raboty-s-associativnymi-massivami/</link>
		<comments>http://www.studcode.ru/archiv/funkcii-i-operacii-raboty-s-associativnymi-massivami/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:34:07 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=456</guid>
		<description><![CDATA[Доступ по ключу
Ассоциативные массивы — объекты, которые наиболее приспособлены для выборки из них данных путем указания нужного ключа. В РНР и для всех массивов, и для списков (которые, также являются массивами) используется один и тот же синтаксис, что является очень большим достоинством. Вот как это выглядит:
echo $Arr["anykey"]; // выводит элемент массива $Аrr с ключом anykey
echo [...]]]></description>
			<content:encoded><![CDATA[<p>Доступ по ключу<br />
Ассоциативные массивы — объекты, которые наиболее приспособлены для выборки из них данных путем указания нужного ключа. В РНР и для всех массивов, и для списков (которые, также являются массивами) используется один и тот же синтаксис, что является очень большим достоинством. Вот как это выглядит:<br />
<code>echo $Arr["anykey"]; // выводит элемент массива $Аrr с ключом anykey<br />
echo $Arr["first"]["second"]; // так используются двумерные массивы</code><br />
 <span id="more-456"></span><br />
<code>$Аrr = SomeFuncThatReturnsArray();<br />
echo $Arr[5];</code><br />
Величина $Аrr[ключ] может стоять в левой части оператора присваивания, oт нее можно брать ссылку с помощью оператора &#038;, и т. д. Н-р:<br />
<code>$Аrr ["аnуkеу"]=аггау(100,200);   // присваиваем элементу массива 100<br />
$ref = &#038;$Arr ["first"] ["second"];    // $ref — синоним элемента массива<br />
$Arr [] = "for add";                         // добавляем новый элемент</code><br />
Функция count ( )<br />
Можно определить размер	(число элементов) и массиве при помощи стандартной функции count ():<br />
<code>$num = count ($Names) ;    // теперь в $num — число элементов в массиве</code><br />
Count () работает не только с массивами, но и с обьектами и даже с обычными переменными (для последних соunt() всегда равен 1, как будто переменная — это массив с одним элементом).<br />
Слияние     массивов<br />
Операция слияния массивов &#8211; создание массива, содержащего как элементы одного, так и другого массива. Реализу¬ется это при помощи оператора +. Н-р:<br />
<code>$a = аrrау ("а"=>"аа", "b"=>"bb");<br />
$b = array ("c"=>"cc", "d"=>"dd");<br />
$c = $a+$b; </code><br />
В результате в $с окажется ассоциативный массив, содержащий все 4 элемента,  а именно: array (&#8221;a&#8221;=>&#8221;aa&#8221;, &#8220;b&#8221;=>&#8221;bb&#8221;, &#8220;c&#8221;=>&#8221;cc&#8221;, &#8220;d&#8221;=>&#8221;dd&#8221;), причем именно в указанном порядке. Если бы мы написали $с=$b+$а, ре-дьтат бы был немного другой, а именно: array(&#8221;c&#8221;=>&#8221;cc&#8221;, &#8220;d&#8221;=>&#8221;dd&#8221;, &#8221;a&#8221;=>&#8221;аа&#8221;, &#8220;b&#8221;=>&#8221;bb&#8221;), т.е. элементы расположены в другом порядке.<br />
Слияние списков будет выглядеть так:<br />
<code>$a = array (10,20,30);<br />
$b = array (100,200);<br />
$c = $a + $b;</code><br />
В $с будет array(10,20,30). При конкатенации массивов с некоторыми одинаковыми элементами (т.е., элементами с одинаковыми ключами) в результирующем массиве останется только один элемент с таким же ключом — тот, который был в первом мас¬сиве, и на том же самом месте.<br />
П-р:<br />
<code>$а = аrrау ('а'=>10, 'b'=>20);<br />
$b = array ('bl=>'new?') ;<br />
$а += $b;</code><br />
В результате этих операций значение $а не изменится!<br />
Обновление элементов в массиве $а:<br />
foreach ($b as $k=>$v) $a[$k]=$v;<br />
Операции слияния массивов. Н-р, дана цепочка:<br />
$z=$a+$b+$c+ . . .  и т. д.;<br />
эквивалентна<br />
$z=$a; $z+=$b; $z+=$c;  . .  .  и  т. д.<br />
Оператор += для массивов делает примерно то же, что и оператор += для чисел, а именно — добавляет в свой левый операнд элементы, перечисленные в правом операнде-массиве, если они еще не содержатся в массиве слева.<br />
В массиве никогда не может быть двух элементов с одинаковыми ключами, потому что все операции, применимые к массивам, всегда контролируют, чтобы этого не произошло.<br />
Прямой     перебор    массива<br />
Идея метода заключается в том, чтобы сразу на каждом &#8220;витке&#8221; цикла одновременно получать и ключ, и значение текущего элемента.<br />
Перебор в стиле РНР4<br />
В четвертой версии языка добавлена специальная инструкция пере¬бора массива — foreach. С ее по¬мощью можно перебрать и распечатать наш массив людей:<br />
<code>foreach ($Names as $k=>$v)  echo "Возраст $k - $v\n";</code><br />
Классический     перебор<br />
Массив $Names хранит связь имен людей и их возрастов. Вот как можно перебрать этот массив при помощи прямого перебора:<br />
<code>for (Reset($Names);list($k,$v)=each($Names);/*пусто*/)<br />
    echo "Возраст $k—$v\n";</code><br />
Переменным $k и $v присваивается результат работы функции each (). Третье условие цикла  отсутствует.<br />
Функция each () возвращает небольшой массив (список), нулевой элемент которого хранит величину ключа текущего элемента массива $Names, а первый — значение текущего элемента; продвигает указатель текущего элемента к следующей позиции. Если следующего элемента в массиве нет, то функция возвращает не список, a false, поэтому она и размещена в условии цикла for. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/funkcii-i-operacii-raboty-s-associativnymi-massivami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Многомерные массивы PHP</title>
		<link>http://www.studcode.ru/archiv/mnogomernye-massivy-php/</link>
		<comments>http://www.studcode.ru/archiv/mnogomernye-massivy-php/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:29:37 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=451</guid>
		<description><![CDATA[Формирование двумерных (и вообще много¬мерных) массивов:  значениями переменных (и значениями элементов массива тоже, поскольку РНР не делает никаких различий между переменными и элементами масси¬ва) может быть все, что угодно, в частности — опять же массив. Можно создавать ассоциативные массивы .(а можно — списки) с любым числом из¬мерений. Н-р, если кроме имени о человеке известен [...]]]></description>
			<content:encoded><![CDATA[<p>Формирование двумерных (и вообще много¬мерных) массивов:  значениями переменных (и значениями элементов массива тоже, поскольку РНР не делает никаких различий между переменными и элементами масси¬ва) может быть все, что угодно, в частности — опять же массив. Можно создавать ассоциативные массивы .(а можно — списки) с любым числом из¬мерений. Н-р, если кроме имени о человеке известен также его возраст, то можно инициировать массив $Names так:<br />
<span id="more-451"></span><br />
<code>$Names["Ivanov"] = array("name"=>"Dinitry","aqe"=>25);<br />
$Names["Petrova"] = array("name"=>"Helen", "age"=>23);</code><br />
или  так:<br />
<code>$Names = array (<br />
"Ivanov" => array ("name"=>"Dmilry", "age"=>25) ,<br />
"Petrova"=> array ("name"=>"Helen", "age"=>23)<br />
 );</code><br />
Для того, чтобы добраться до нужного элемента в нашем массиве, будет:<br />
<code>echo $Names ["Ivanov"]["age"];    // напечатает "25"<br />
echo $Names ["Petrova"]["bad"];   // ошибка: нет такого элемента "bad"</code></p>
<p><code>$M=array();<br />
for($i=0;$i<10;$i++)<br />
  $M[$i]=array();</p>
<p>$M[0][0]=67;<br />
$M[1][0]=true;<br />
$M[0][2]=”Слово”;</code></p>
<p>Аccoциативные массивы в РНР удобно использовать как некие структуры, хранящие данные. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/mnogomernye-massivy-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Общее описание списков и ассоциативных массивов</title>
		<link>http://www.studcode.ru/archiv/obshhee-opisanie-spiskov/</link>
		<comments>http://www.studcode.ru/archiv/obshhee-opisanie-spiskov/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:26:38 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Программирование PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=446</guid>
		<description><![CDATA[Ассоциативные массивы — один из самых &#124;мощных инструментов в РНР. Массивы — нечто, что довольно часто реализовывается в интерпретаторах типа РНР.
Массивы — это своеобразные контейнеры-переменные для хранения сразу нескольких величин, к которым можно затем быстро и удобно обратиться.
Все массивы  являются ассоциа¬тивными (в частности, списки — тоже). Ассоциативные массивы в РНР являются направленными, т.е. в [...]]]></description>
			<content:encoded><![CDATA[<p>Ассоциативные массивы — один из самых |мощных инструментов в РНР. Массивы — нечто, что довольно часто реализовывается в интерпретаторах типа РНР.<br />
Массивы — это своеобразные контейнеры-переменные для хранения сразу нескольких величин, к которым можно затем быстро и удобно обратиться.<br />
Все массивы  являются ассоциа¬тивными (в частности, списки — тоже). Ассоциативные массивы в РНР являются направленными, т.е. в них существует определенный (и предсказуемый) порядок элементов, не зависящий от реализации. А зна¬чит, есть первый и последний элементы, и для каждого элемента можно оп¬ределить следующий за ним.<br />
<span id="more-446"></span><br />
Операция [ ] всегда добавляет элемент в конец массива, присваивая ему при этом такой числовой индекс, который бы не конфликтовал с уже имеющимся в массиве (точнее, выбирается номер, превосходящий все имеющиеся цифровые  ключи  в массиве). Любая операция $Arrау [ ключ ] = значение всегда добавляет элемент в конец массива, конечно, за исключением тех случаев, когда ключ уже присутствует в массиве. Если надо изменить порядок следования элементов в ассоциативном массиве, не изменяя в то же время их ключей, это можно сделать одним из двух способов: воспользоваться функциями сортировки, либо же создать новый пустой массив и заполнить его в нужном порядке, пройдясь по элементам исходного массива.<br />
Пусть в программе надо описать список из нескольких человеческих имен.<br />
Инициализация массива:</p>
<pre><code>
$NamesList[0]=”Dmitry”;
$NamesList[1]=”Helen”;
$NamesList[2]=”Sergey”;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/obshhee-opisanie-spiskov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

