Здравствуйте уважаемые начинающие программисты.
В этой статье мы познакомимся с одной из основных, и наиболее часто встречающихся в php структур для хранения данных — массивом.
Массивы используются для работы с базами данных, каталогами, списками, библиотеками, словарями, и везде где возникает потребность в большом количестве однотипных переменных.
Массив, представляет из себя совокупность переменных одного типа, каждая из которых имеет свой индекс. По способу идентификации массивы делятся на два типа — числовые индексируемые массивы, и ассоциативные массивы.
Допускается так же смешанный тип. Далее эти три типа массивов могут быть одномерными, или многомерными.
Но давайте всё подробно и по порядку.
Создание одномерного массива с числовым индексом.
Имя массива, как и имя переменной начинается знаком доллара $.
Создать массив можно несколькими способами. Один из наиболее часто применяемых из них — использование конструкции array().
array() — языковая конструкция, предназначенная для создания массивов.
В круглых скобках, через запятую, располагаются элементы массива. Для вывода выбранного элемента на экран, применяется конструкция print
Пример:
<?php
$next=array("Чай", "Кофе", "Сок");
print $next[1];
//Выводит Кофе
?>
Как видите, числовой индекс прописывается в квадратных скобках. Если программист не задаёт индекс, как в этом примере, то php делает это автоматически. Для присвоения индекса применяется оператор =>
Нумерация начинается с нуля — первый элемент, и далее возрастает на единицу, на каждом следующем элементе. Поэтому, в нашем примере, вызывая элемент с индексом 1, мы увидели второй по счёту — «Кофе».
Чтобы увидеть наглядно структуру и содержание массива, вместо конструкции print, применяется функция print_r, а для более удобно-читаемого отображения, эта функция заключается в тег <pre>.
<?php
$next=array("Чай", "Кофе", "Сок");
echo "<pre>";
print_r($next);
echo "</pre>";
/* Выводит структуру и содержание массива
Array
(
[0] => Чай
[1] => Кофе
[2] => Сок
)*/
?>
Можно присваивать индекс самостоятельно.
<?php
$next=array(3 => "Чай", 7 => "Кофе", 8 => "Сок");
print $next[3];
//Выводит Чай
?>
Ещё один способ создания массива — это создание массива при помощи квадратных скобок, без применения конструкций и функций.
При этом способе не инициализированным переменным, которые являются элементами массива, присваивается числовой индекс и значение.
<?php
$next[0] = "Чай";
$next[1] = "Кофе";
$next[2] = "Сок";
print $next[0];
//Выводит Чай
?>
Можно числовой индекс не указывать, и оставить скобки пустыми, тогда он будет присвоен автоматически так, как об этом было сказано выше.
<?php
$next[] = "Чай";
$next[] = "Кофе";
$next[] = "Сок";
echo "<pre>";
print_r($next);
echo "</pre>";
/*Содержание массива
Array
(
[0] => Чай
[1] => Кофе
[2] => Сок
)*/
?>
Следующий способ создания числового массива — это создания числового массива функцией range().
range() создаёт массив содержащий диапазон чисел, причём в параметрах достаточно указать первое и последнее число диапазона.
<?php
$next = range(3,8);
echo "<pre>";
print_r($next);
echo "</pre>";
/*Содержание массива
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
[4] => 7
[5] => 8
)*/
?>
Создание одномерного ассоциативного массива.
В отличие от числового массива, в ассоциативном, индекс присвоенный элементу должен вызывать ассоциацию с этим элементом. У индекса есть ещё одно, чаще применяемое, название — ключ. Ключ может содержать любые символы в неограниченном количестве
Способы создания такого массива, почти не отличаются от, рассмотренных выше, способов создания числовых массивов.
<?php
$next["Индийский"] = "Чай";
$next["Эспрессо"] = "Кофе";
$next["Апельсиновый"] = "Сок";
print $next["Апельсиновый"];
//Выводит Сок
?>
Попробуйте самостоятельно посмотреть содержание массива, и создать массив с конструкцией array()
Ассоциативный тип очень удобен, когда нужно найти определённый элемент не перебирая весь массив.
Создание многомерного простого (числового) массива.
В отличие от одномерного, в многомерном массиве элементы определяются несколькими индексами. Количество индексов не ограничивается, но обычно не превышает трёх.
Давайте для начала напишем небольшое меню.
<?php
$next[0][0]="Напитки";
$next[0][1]="Выпечка";
$next[1][0]="Чебурек";
$next[1][1]="Пицца";
$next[1][2]="Слойка";
$next[2][0]="Чай";
$next[2][1]="Кофе";
$next[2][2]="Сок";
echo "<h3>".$next[0][0].":</h3>";
for ($a=0; $a<=2; $a++)
{
echo $next[2][$a]."<br>";
}
echo "<h3>".$next[0][1].":</h3>";
for ($b=0; $b<=2; $b++)
{
echo $next[1][$b]."<br>";
}
/*Выводит:
Напитки:
Чай
Кофе
Сок
Выпечка:
Чебурек
Пицца
Слойка*/
?>
Чтобы понять как это устроено и работает, давайте посмотрим структуру этого массива.
<?php
$next[0][0]="Напитки";
$next[0][1]="Выпечка";
$next[1][0]="Чебурек";
$next[1][1]="Пицца";
$next[1][2]="Слойка";
$next[2][0]="Чай";
$next[2][1]="Кофе";
$next[2][2]="Сок";
echo "<pre>";
print_r($next);
echo "</pre>";
/*Структура массива
Array
(
[0] => Array
(
[0] => Напитки
[1] => Выпечка
)
[1] => Array
(
[0] => Чебурек
[1] => Пицца
[2] => Слойка
)
[2] => Array
(
[0] => Чай
[1] => Кофе
[2] => Сок
)
)
*/
?>
Отсюда видно что наш многомерный массив состоит из трёх вложенных массивов, один из которых содержит заголовки разделов меню, а два других их содержание.
При выводе на экран, заголовки выделяются тегом <h3>, затем в конструкции for создаются три выражения (переменная — значение):
1. $a = 0 — счётчик начала отсчёта элементов.
2. $a <= 2 - продолжительность цикла.
3. $a++ - шаг счётчика.
После чего эти данные выводятся на экран в виде меню. В массив можно заложить гораздо больше элементов меню, и при необходимости выбирать, и выводить только те, которые нужны в данный момент.
Кроме того, каждому элементу массива, можно дополнительно задать ещё несколько значений. Для этого каждому индексу массива задаётся несколько пар ключ-значение, что будет являться многомерным ассоциативным массивом.
<?php
$A["napitci_h"] = array("name"=>"Чай", "grade"=>"Лисма", "price"=>"25$");
$A["napitci_k"] = array("name"=>"Кофе", "grade"=>"Арабика", "price"=>"100$");
$A["napitci_s"] = array("name"=>"Сок", "grade"=>"Яблочный", "price"=>"10$");
//Затем обращаемся к нужному элементу массива
print $A["napitci_h"]["name"]."<br>";
print $A["napitci_h"]["grade"]."<br>";
print $A["napitci_h"]["price"]."<br>";
?>
Как видите, при помощи функции print, можно обратится к любому элементу массива, указав дополнительный ключ.
Вообще-то, так как print является функцией, её параметры нужно заключать в круглые скобки,но PHP допускает обходиться без них.
И последний тип массива, который мы рассмотрим в этой статье — это многомерный массив смешанного индексирования. В таком массиве применяются и числовые и строковые индексы.
<?php
$next["Напитки"] [1] = "Чай";
$next["Напитки"] [2] = "Кофе";
$next["Напитки"] [3] = "Сок";
print $next["Напитки"] [1];
?>
В PHP существует ещё много функций для работы с массивами, но цель этой статьи — показать только типы массивов, и некоторые способы их создания.
Работу с массивами будем проводить в отдельной статье.
Перемена
— Никогда не пытайся понять, то чего не можешь понять.
— Не понял…
— И не пытайся!
— Дорогой, когда мы поженимся, я буду делить с тобой все твои тревоги и заботы. — Но милая, у меня нет никаких тревог и забот. — Я же говорю — когда мы поженимся..
Управляющие конструкции в PHP < < < В раздел > > > Что такое SEO
Исходник это CMS WordPress, шаблон TwentyTen. Сам я в комментах изменил только шрифт, всё остальное идет в шаблоне по умолчанию. Ёшё я отключил древовидные комментарии, так как особых диспутов на этом блоге не возникает, а вообще такая функция в шаблоне тоже есть.
А можете прислать исходники мне на почту, как вы сделали такую систему комментариев на сайте, очень хочу себе такую на сайте.
Заходите конечно. Я PHP тоже только учу, может поэтому так подробно получается.
Доброго времени суток. Забрел на Ваш сайт случайно, через поисковик. искал информацию по пользовательским функциям в вордпресс. Смотрел многие блоги, раскрученные и авторитетные, но для меня многое было непонятно, а здесь все разложено по полочкам, как раз для таких, как я. Перечитал ряд Ваших постов, все они аналогичны этому, все понятно и разжевано. Спасибо, буду заходить и просвещаться. Заодно увлекся программированием :))) Попробую что-либо сделать и применить.