Відмінності між версіями «Робота з асоціативними масивами в PHP»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 153: Рядок 153:
 
<p>Функция <strong></strong> используется специально для создания массивов. При этом она позволяет создавать пустые массивы. Вот методы использования функции <strong>Array()</strong>:</p>
 
<p>Функция <strong></strong> используется специально для создания массивов. При этом она позволяет создавать пустые массивы. Вот методы использования функции <strong>Array()</strong>:</p>
 
  <code><font color="#000000"><font color="#008000">&lt;?</font><font color="#0000BB">php</font><br>
 
  <code><font color="#000000"><font color="#008000">&lt;?</font><font color="#0000BB">php</font><br>
        <font color="#FF8000">//&nbsp;Создает&nbsp;пустой&nbsp;массив:</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;пустой&nbsp;массив:</font><br>
        <font color="#008000">$</font><font color="#0000BB">arr&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">();</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">();</font><br>
        <font color="#FF8000">//&nbsp;Создает&nbsp;список&nbsp;с&nbsp;тремя&nbsp;элементами.&nbsp;Индексы&nbsp;начинаются&nbsp;с&nbsp;нуля:</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;список&nbsp;с&nbsp;тремя&nbsp;элементами.&nbsp;Индексы&nbsp;начинаются&nbsp;с&nbsp;нуля:</font><br>
        <font color="#008000">$</font><font color="#0000BB">arr2&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">,</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">,</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr2&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">,</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">,</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">);</font><br>
        <font color="#FF8000">//&nbsp;Создает&nbsp;ассоциативный&nbsp;массив&nbsp;с&nbsp;тремя&nbsp;элементами:</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;ассоциативный&nbsp;массив&nbsp;с&nbsp;тремя&nbsp;элементами:</font><br>
        <font color="#008000">$</font><font color="#0000BB">arr3&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Иван&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Петр&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидор&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr3&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Иван&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Петр&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидор&quot;</font><font color="#008000">);</font><br>
        <font color="#FF8000">//&nbsp;Создает&nbsp;многомерный&nbsp;ассоциативный&nbsp;массив:</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;многомерный&nbsp;ассоциативный&nbsp;массив:</font><br>
        <font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;24&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;24&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
        <font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;34&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;34&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
        <font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;47&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;47&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
        <font color="#008000">?&gt;</font></font></code>
+
<font color="#008000">?&gt;</font></font></code>

Версія за 13:09, 12 квітня 2010

Ассоциативные массивы в PHP

В PHP индексом массива может быть не только число, но и строка. Причем на такую строку не накладываются никакие ограничения: она может содержать пробелы, длина такой строки может быть любой.

Ассоциативные массивы особенно удобны в ситуациях, когда элементы массива удобнее связывать со словами, а не с числами.

Итак, массивы, индексами которых являются строки, называются ассоциативными массивами.

Одномерные ассоциативные массивы:

Одномерные ассоциативные массивы содержат только один ключ (элемент), соответствующий конкретному индексу ассоциативного массива. Приведем пример:

<?php
// Ассоциативный массив
$names["Иванов"]="Иван";
$names["Сидоров"]="Николай";
$names["Петров"]="Петр";
// В данном примере: фамилии - ключи ассоциативного массива
// , а имена - элементы массива names
?>

Доступ к элементам одномерных ассоциативных массивов осуществляется так же, как и к элементам обыкновенных массивов, и называется доступом по ключу:

echo $names["Иванов"];

Многомерные ассоциативные массивы:

Многомерные ассоциативные массивы могут содержать несколько ключей, соответствующих конкретному индексу ассоциативного массива. Рассмотрим пример многомерного ассоциативного массива:

<?php
// Многомерный массив
$A["Ivanov"] = array("name"=>"Иванов И.И.", "age"=>"25", "email"=>"[email protected]");
$A["Petrov"] = array("name"=>"Петров П.П.", "age"=>"34", "email"=>"[email protected]");
$A["Sidorov"] = array("name"=>"Сидоров С.С.", "age"=>"47", "email"=>"[email protected]");
?>

Многомерные массивы похожи на записи в языке Pascal или структуры в языке C.

Доступ к элементам многомерного ассоциативного массива осуществляется следующим образом:

echo $A["Ivanov"]["name"]; // Выводит Иванов И.И.
echo $A["Petrov"]["email"]; // Выводит [email protected]

Как вы уже заметили, для создания многомерного ассоциативного массива мы использовали специальную функцию array, мы ее рассмотрим позже, когда будем рассматривать операции над массивами.

Ассоциативные многомерные массивы можно создавать и классическим способом, хотя это не так удобно:

<?php
// Многомерный ассоциативный массив
$A["Ivanov"]["name"]="Иванов И.И.";
$A["Ivanov"]["age"]="25";
$A["Ivanov"]["email"]="[email protected]";

$A["Petrov"]["name"]="Петров П.П.";
$A["Petrov"]["age"]="34";
$A["Petrov"]["email"]="[email protected]";

$A["Sidorov"]["name"]="Сидоров С.С.";
$A["Sidorov"]["age"]="47";
$A["Sidorov"]["email"]="[email protected]";

// Получаем доступ к ключам многомерного ассоциативного массива
echo $A["Ivanov"]["name"]."<br>"; // Выводит Иванов И.И.
echo $A["Sidorov"]["age"]."<br>"; // Выводит 47
echo $A["Petrov"]["email"]."<br>"; // Выводит [email protected]
?>

Фукции для работы с массивами и операции над массивами

Функции для работы с массивами

Рассмотрим некоторые часто используемые функции для работы с массивами.

Функция list()

Предположим, у нас есть массив, состоящий из трех элементов:

$names[0]="Александр";
$names[1]="Николай";
$names[2]="Яков";

Допустим, в какой-то момент нам нужно передать значения всех трех элементов массива, соответственно трем переменным: $alex, $nick, $yakov. Это можно сделать так:

$alex = $names[0];
$nick = $names[1];
$yakov = $names[2];

Если массив большой, то такой способ присвоения элементов массива переменным не очень удобен.

Есть более рациональный подход - использование функции :

list ($alex, $nick, $yakov) = $names;

Если нам нужны только "Николай" и "Яков", то мы можем сделать так:

list (, $nick, $yakov) = $names;

Функция array()

Функция используется специально для создания массивов. При этом она позволяет создавать пустые массивы. Вот методы использования функции Array():

<?php
// Создает пустой массив:
$arr = array();
// Создает список с тремя элементами. Индексы начинаются с нуля:
$arr2 = array("Иванов","Петров","Сидоров");
// Создает ассоциативный массив с тремя элементами:
$arr3 = array("Иванов"=>"Иван", "Петров"=>"Петр", "Сидоров"=>"Сидор");
// Создает многомерный ассоциативный массив:
$arr4 = array("name"=>"Иванов", "age"=>"24", "email"=>"[email protected]");
$arr4 = array("name"=>"Петров", "age"=>"34", "email"=>"[email protected]");
$arr4 = array("name"=>"Сидоров", "age"=>"47", "email"=>"[email protected]");
?>