PHP. Структуры данных (массивы). Работа с множествами.
Продолжение базового ознакомления с синтаксисом PHP. Теперь самое время посмотреть на составные типы дынных, точнее, на тип множества - массив. В некоторых языках его называют коллекциями, подразумевая различные виды множеств, от списков до "словарей" (или ассоциативных массивов).
Массивы.
Для создания коллекций в PHP существует один тип - массив. Форма и внутренняя структура такой коллекции зависит только от фантазии разработчика. Ключевое слово для создания массива: array:
Начиная с PHP 5.4 появилась сокращенная (и очень логичная) форма конструктора массива:
Представленные примеры показывают создание обычного списочного массива - последовательное перечисление значений. Такие массивы используются для работы с однородными множествами значений. Каждому значению сопоставлен целочисленный индекс, который уникальным образом идентифицирует элемент списка. Именно по индексу происходит обращение к элементам массива. Обращение к произвольному элементу массива осуществляется посредством оператора квадратных скобок:
Для добавления значения в массив мы можем использовать пустой оператор квадратных скобок:
Ассоциативные массивы.
Коллекции такого рода иначе называют "словарями", т.к. они строятся по принципу "ключ": "значение". Т.е. каждому уникальному ключу соответствует свое значение. В отличие от списочных массивов последовательность расположения элементов в ассоциативных коллекциях имеет условное значение. Как правило, она зависит от порядка определения или добавления элементов. Синтаксис создания ассоциативных массивов в целом схож с простыми массивами, ключ и значение разделяются оператором => :
Доступ к элементам массива происходят аналогично, но с использованием не индекса, а установленного ключа. Для добавления, или изменения значения мы используем обращение к элементу массива по ключу:
Циклы.
Множества данных неразрывно связаны с алгоритмическими циклами. Первое порождает второе и наоборот. Основных циклов три: while, for, foreach. Каждый имеет свою специфику, хотя, при необходимости, можно заменить любой любым. Дело в предпочтениях и лаконичности кода.
for
Цикл for имеет синтаксис, аналогичный таковым в большинстве процедурных языков.
for(инициализация; проверка условия; цикличное выражение) { тело цикла }
инициализация - тут мы устанавливаем начальные значения используемых переменных, например - счетчика итераций, выполняется один раз перед началом работы цикла.
проверка условия - тут выполняется логическое выражение перед каждой итерацией цикла, например - проверка значение счетчика.
циклическое выражение - выполняется после каждой итерации, как правило - изменяет значение счетчика.
Пример:
Как видим, подобный механизм очень удобен для работы со списочными массивами, которые строятся с использованием последовательных целочисленных индексов.
Аналогично мы можем сгенерировать массив с нужным количеством значений.
while
Синтаксис:
while(логическое выражение){ тело цикла }
логическое выражение - условие, проверяемое перед каждой итерацией цикла. если выражение возвращает true - итерация выполняется.
Цикл while - более простая аналогия цикла, подобная for. Использование той или иной версии цикла зависит от задачи и чувства прекрасного.
foreach
Специальная конструкция, приспособленная для обхода массивов. Имеет две формы синтаксиса.
сокращенная:
foreach($массив as $элемент){ тело цикла }
полная:
foreach($массив as $ключ => $элемент){ тело цикла }
массив - массив, по которому совершается обход.
ключ - ключ текущей ячейки массива.
элемент - значение текущей ячейки массива.
Аналогично совершается обход последовательного массива.
В нормальном режиме, для каждой итерации создается копия элемента массива. Это надо учитывать при необходимости изменять содержимое исходного массива.
В PHP существует большая библиотека функций, практически, на все случаи жизни. В том числе и для массивов. Но логично будет рассмотреть их после изучения самих функций. Так что тема массивов пока не закрыта.
Продолжение базового ознакомления с синтаксисом PHP. Теперь самое время посмотреть на составные типы дынных, точнее, на тип множества - массив. В некоторых языках его называют коллекциями, подразумевая различные виды множеств, от списков до "словарей" (или ассоциативных массивов).
Массивы.
Для создания коллекций в PHP существует один тип - массив. Форма и внутренняя структура такой коллекции зависит только от фантазии разработчика. Ключевое слово для создания массива: array:
<?php $users = array("Vasya", "Petya", "Kolya");
Начиная с PHP 5.4 появилась сокращенная (и очень логичная) форма конструктора массива:
<?php $users = ["Vasya", "Petya", "Kolya"];
Представленные примеры показывают создание обычного списочного массива - последовательное перечисление значений. Такие массивы используются для работы с однородными множествами значений. Каждому значению сопоставлен целочисленный индекс, который уникальным образом идентифицирует элемент списка. Именно по индексу происходит обращение к элементам массива. Обращение к произвольному элементу массива осуществляется посредством оператора квадратных скобок:
<?php $users = array("Vasya", "Petya", "Kolya"); print "Hello, " . $users[0];
Для добавления значения в массив мы можем использовать пустой оператор квадратных скобок:
<?php $users = array("Vasya", "Petya", "Kolya"); $users[] = "Olya";
Ассоциативные массивы.
Коллекции такого рода иначе называют "словарями", т.к. они строятся по принципу "ключ": "значение". Т.е. каждому уникальному ключу соответствует свое значение. В отличие от списочных массивов последовательность расположения элементов в ассоциативных коллекциях имеет условное значение. Как правило, она зависит от порядка определения или добавления элементов. Синтаксис создания ассоциативных массивов в целом схож с простыми массивами, ключ и значение разделяются оператором => :
<?php $user = array("name" => "Vasya", "age" => 20, 'is_admin' => true); print "user " . $user['name'] . " has " . $user['age'] . " years old.";
Доступ к элементам массива происходят аналогично, но с использованием не индекса, а установленного ключа. Для добавления, или изменения значения мы используем обращение к элементу массива по ключу:
<?php $user = array("name" => "Vasya", "age" => 20); $user["is_admin"] = true;
Циклы.
Множества данных неразрывно связаны с алгоритмическими циклами. Первое порождает второе и наоборот. Основных циклов три: while, for, foreach. Каждый имеет свою специфику, хотя, при необходимости, можно заменить любой любым. Дело в предпочтениях и лаконичности кода.
for
Цикл for имеет синтаксис, аналогичный таковым в большинстве процедурных языков.
for(инициализация; проверка условия; цикличное выражение) { тело цикла }
инициализация - тут мы устанавливаем начальные значения используемых переменных, например - счетчика итераций, выполняется один раз перед началом работы цикла.
проверка условия - тут выполняется логическое выражение перед каждой итерацией цикла, например - проверка значение счетчика.
циклическое выражение - выполняется после каждой итерации, как правило - изменяет значение счетчика.
Пример:
<?php for ($i = 0; $i < 10; ++$i){ print "iteration " . $i . ", "; }
Как видим, подобный механизм очень удобен для работы со списочными массивами, которые строятся с использованием последовательных целочисленных индексов.
<?php $users = array("Vasya", "Petya", "Kolya", "Olya", "Zhenya");
for ($i = 0; $i < 5; ++$i){ print "user " . $users[$i] . "<br />"; }
Аналогично мы можем сгенерировать массив с нужным количеством значений.
<?php $users = array(); for ($i = 0; $i < 5; ++$i){ $users[] = $i * 10 + $i%10; }
while
Синтаксис:
while(логическое выражение){ тело цикла }
логическое выражение - условие, проверяемое перед каждой итерацией цикла. если выражение возвращает true - итерация выполняется.
Цикл while - более простая аналогия цикла, подобная for. Использование той или иной версии цикла зависит от задачи и чувства прекрасного.
<?php $x = 5; while($x>0){ print $x . ","; $x --; }
foreach
Специальная конструкция, приспособленная для обхода массивов. Имеет две формы синтаксиса.
сокращенная:
foreach($массив as $элемент){ тело цикла }
полная:
foreach($массив as $ключ => $элемент){ тело цикла }
массив - массив, по которому совершается обход.
ключ - ключ текущей ячейки массива.
элемент - значение текущей ячейки массива.
<?php $user = array("name" => "Vasya", "age" => 20, 'is_admin' => true); foreach($user as $key => $value){ print $key . ' = ' . $value . '<br>'; }
Аналогично совершается обход последовательного массива.
В нормальном режиме, для каждой итерации создается копия элемента массива. Это надо учитывать при необходимости изменять содержимое исходного массива.
В PHP существует большая библиотека функций, практически, на все случаи жизни. В том числе и для массивов. Но логично будет рассмотреть их после изучения самих функций. Так что тема массивов пока не закрыта.
Комментариев нет:
Отправить комментарий