Продолжая изучение первой части этой серии, этот учебник продолжит знакомство с освоением PHP-массивов и циклов. Базовые основы будут преподаваться вместе с их равными партнерами, используемыми в популярном программном обеспечении, таком как WordPress.
обзор
Начинающие: для полного понимания этих концепций настоятельно рекомендуется сначала прочитать часть 1. Во второй части этой серии статей будут рассмотрены основные принципы PHP, которые помогают в повседневном кодировании. Это включает в себя создание и использование массивов и циклов для хранения и извлечения данных, когда вам угодно.
Массив Света
Массив — это то, к чему вы обращаетесь, когда снова и снова создаете подобные переменные. Два слова используются при обращении к содержимому массива. Эти слова являются «ключом» и «ценностью» . Каждый массив имеет как минимум 1 ключ и значение. Они всегда будут приходить парами, так как ключ относится к значению. Существует три типа массивов: ассоциативный, числовой и многомерный. Многомерные массивы — это просто массивы внутри массивов. Давайте кратко рассмотрим первые два.
Ассоциативные массивы
Ассоциативный массив полезен тем, что ключ где-то объявляется программистом, что дает контекст значению. Например, я создам массив, содержащий личную информацию о себе. Ниже вы увидите два способа размещения массива в PHP. Цель второго — только для организации и удобства чтения. Как отметил Джеффри в первой части этой серии статей, PHP не чувствителен к пробелам.
|
1
2
3
|
<?php
$personalInfo = array(«name»=>»Erik Reagan»,»occupation»=>»Web Developer»,»location»=>»Savannah, GA USA»);
?>
|
|
1
2
3
4
5
6
7
8
|
<?php
$personalInfo = array(
‘name’ => ‘Erik Reagan’,
‘occupation’ => ‘Web Developer’,
‘age’ => 23,
‘location’ => ‘Savannah, GA USA’
);
?>
|
Это здорово и все — но как мне заставить мою информацию отображаться в HTML? Я рад, что ты спросил! Это очень похоже на отображение переменной, но вы добавляете один маленький дополнительный фрагмент данных: ключ .
|
1
|
<p>My name is <?=$personalInfo[‘name’]?> and I am a <?=$personalInfo[‘occupation’]?> in <?=$personalInfo[‘location’]?> and am <?=$personalInfo[‘age’]?> years old.</p>
|
Подожди секунду? Что это за <? = …?> Внезапно? Использование <? =?> Является сокращением PHP для <? Php echo …?>. В первой части вы узнали, что команда echo похожа на команду print на других языках. Сокращенный PHP — это всего лишь один из способов писать меньше кода во время работы.
Числовые массивы
Иногда вам не нужно иметь слово, связанное со значением в массиве. В этом случае вы будете использовать числовой массив, который фактически создается по умолчанию в PHP. Выше мы использовали знак равенства, за которым следует знак «больше» (=>), чтобы установить значения массива для ключей. С числовыми массивами вы можете просто установить значения, и ключ предполагается постепенно. Давайте взглянем:
|
1
2
3
4
5
6
7
8
9
|
<?php
$personalInfo = array(
‘name’ => ‘Erik Reagan’,
‘occupation’ => ‘Web Developer’,
‘age’ => 23,
‘location’ => ‘Savannah, GA USA’
);
$fruit = array(‘apple’,’orange’,’grapes’);
?>
|
Как видите, мы ничего не сделали, кроме как поместили значения в этот массив. PHP позаботился о ключах для нас. Что касается начинающих, ключи ВСЕГДА начинаются с цифры 0 и увеличиваются на 1 с каждым новым элементом массива. Если вы углубитесь в изучение массивов, вы поймете, что можете манипулировать ими по своему усмотрению, но сегодня это не рассматривается. «Как я знаю, какой ключ использовать», спросите вы. В нашем примере проще всего начать с нуля и найти свой элемент. Например, ключ для «яблока» равен 0, ключ для «апельсина» равен 1, а ключ для «винограда» равен 2. Довольно просто, да. Ну, иногда ваши массивы становятся огромными и поднимаются в десятки и, возможно, сотни. Никто не хочет сидеть там и считать этот беспорядок. Ваш первый инстинкт может состоять в том, чтобы просто запустить «echo $ fruit», но он будет только выплевывать слово «Array». PHP дает нам несколько простых способов просмотра данных нашего массива. Давайте посмотрим на два из них.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
<?php
$personalInfo = array(
‘name’ => ‘Erik Reagan’,
‘occupation’ => ‘Web Developer’,
‘age’ => 23,
‘location’ => ‘Savannah, GA USA’
);
$fruit = array(‘apple’,’orange’,’grapes’);
print_r($personalInfo);
var_dump($fruit);
?>
|
Обратите внимание, что запуск их в вашем браузере может привести к чему-то довольно неприятному. Первый массив будет особенно непривлекательным и, возможно, трудным для чтения. Может быть полезно использовать теги <pre> </ pre> вокруг этих двух команд, чтобы пустое пространство было предварительно отформатировано правильно. Предполагая, что вы разместили эти теги вокруг команды, вы должны напечатать следующее:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
Array
(
[0] => apple
[1] => orange
[2] => grapes
)
array(4) {
[«name»]=>
string(11) «Erik Reagan»
[«occupation»]=>
string(13) «Web Developer»
[«age»]=>
int(23)
[«location»]=>
string(16) «Savannah, GA USA»
}
|
Первая функция print_r () просто распечатает структуру и содержимое вашего массива. Клавиши будут в скобках слева, а значения будут справа от соответствующих клавиш. Во второй функции var_dump () вы узнаете немного больше о своих данных. Обратите внимание на ключ age в массиве $ personalInfo. Значение не в кавычках, как другие значения. Я сделал это, чтобы вы могли различать два типа данных в PHP. Все, что в кавычках, считается строкой, а в случае данных «возраст» — целым числом . Я не буду вдаваться в детали других типов данных, но я укажу на это, потому что функция var_dump () дает вам некоторую полезную информацию.
Обратите внимание на первый бит в первой строке « array ( 4 ) ». Первый бит сбрасывается, говоря: «Это массив, и он содержит 4 набора данных». Спускаясь до следующей строки, вы получаете свой ключ, вы видите первый ключ, а затем он говорит « string ( 11 ) ». Это говорит: «Это строка длиной 11 символов» (имейте в виду, что пробел считается символом). Спрыгните на ключ «age» и обратите внимание, что в нем написано int ( 23 ) Это говорит: «Это целое число со значением 23».
Теперь, когда вы знаете, как использовать print_r () и var_dump (), мы перейдем к циклической обработке этих данных.
Многомерные массивы
Как упоминалось выше, многомерный массив — это просто массив, который содержит по крайней мере один дополнительный массив в качестве значения. Я буду работать с примером «personalInfo» и создам массив для команды сотрудников.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
<?
$company = array(
‘info’ => array(
‘name’ => ‘Awesome Web Company’,
‘location’ => ‘Savannah, GA’,
‘website’ => ‘http://weAreAwesome.com’),
‘staff’ => array(
array(‘name’=>’Kermit the Frog’,’position’ => ‘CEO’),
array(‘name’=>’Hiro Nakamura’,’position’ => ‘Art Director’),
array(‘name’=>’Willy Wonka’,’position’ => ‘Web Developer’)
)
);
?>
|
Как видите, многомерные массивы могут быть запутанными. Это странный пример, потому что обычно этот тип данных будет храниться в базе данных и позже извлечен с помощью PHP. Однако ради изучения массивов мы начнем с данных в PHP. Первый ключ в этом массиве называется «информация», и его значение на самом деле является ассоциативным массивом, содержащим информацию о компании. Вторым ключом нашего массива $ company является ‘staff’, а его значением является числовой массив. Давайте посмотрим на структуру, прежде чем мы начнем. Запуск print_r ($ company) даст следующее:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
Array
(
[info] => Array
(
[name] => Awesome Web Company
[location] => Savannah, GA
[website] => http://weAreAwesome.com
)
[staff] => Array
(
[0] => Array
(
[name] => Kermit the Frog
[position] => CEO
)
[1] => Array
(
[name] => Hiro Nakamura
[position] => Art Director
)
[2] => Array
(
[name] => Willy Wonka
[position] => Web Developer
)
)
)
|
Теперь информация о нашей компании готова к доступу. Мы обращаемся к внутренним массивам так же, как мы обращались к нашей личной информации ранее. Вот пример использования данных из этого многомерного массива:
|
1
2
3
4
5
6
|
<h1><?=$company[‘info’][‘name’]?></h1>
<p>Located in <?=$company[‘info’][‘location’]?> and online at <a href=»<?=$company[‘info’][‘website’]?>»><?=$company[‘info’][‘website’]?></a>.</p>
<h2>Our CEO</h2>
<p><?=$company[‘staff’][0][‘name’]?></p>
|
Теперь, когда у нас есть представление о массивах, давайте перейдем к циклам, которые минимизируют время, которое мы тратим на анализ данных массива.
Loops
Циклы очень пригодятся, поскольку объем данных, с которыми вы работаете, увеличивается. Мы вошли в массивы, так что, естественно, приводит нас к петлям. В последнем фрагменте кода мы перечислили сотрудника в массиве $ company . Что, если мы хотим циклически проходить через каждого сотрудника и отображать информацию единообразно? Хорошо в приходит цикл foreach . Так же, как звучит функция, она будет выполнять определенное действие для каждого элемента в массиве или объекте. Обычно это выглядит так:
|
1
2
3
4
5
|
<?php
foreach($array as $key => $value) {
…some code here
}
?>
|
Обратите внимание на три переменные, переданные этой функции. Первый — это просто массив, с которым мы работаем. Вторая и третья переменные определяются ВАМИ и могут говорить все что угодно. Это то, что относится к данным массива в фигурных скобках. Мы посмотрим на это через минуту. Но сначала, так же как команда echo имеет сокращенный или альтернативный синтаксис, в foreach есть что-то, что поможет переходить между PHP и HTML. Таким образом, код будет максимально чистым. Это выглядит так:
|
1
2
3
4
|
<?
<p>Some html and some php will go here</p>
<?
|
Вы увидите этот формат также в операторах if и while (например, в WordPress). Теперь, когда мы рассмотрели формат этой функции, давайте запустим ее в действие. Возвращаясь к массиву информации о компании, давайте создадим хорошую страницу с этими данными.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<?
$company = array(
‘info’ => array(
‘name’ => ‘Awesome Web Company’,
‘location’ => ‘Savannah, GA’,
‘website’ => ‘http://weAreAwesome.com’),
‘staff’ => array(
array(‘name’=>’Kermit the Frog’,’position’ => ‘CEO’),
array(‘name’=>’Hiro Nakamura’,’position’ => ‘Art Director’),
array(‘name’=>’Willy Wonka’,’position’ => ‘Web Developer’)
)
);
?>
<h1><?=$company[‘info’][‘name’]?></h1>
<p>Located in <?=$company[‘info’][‘location’]?> and online at <a href=»<?=$company[‘info’][‘website’]?>»><?=$company[‘info’][‘website’]?></a>.</p>
<h2>Our Staff</h2>
<ul>
<?php foreach ($company[‘staff’] as $person) : ?>
<li><?=$person[‘name’]?> is our <?=$person[‘position’]?></li>
<?php endforeach;
</ul>
|
В этом случае цикл foreach просматривает каждого сотрудника и отображает HTML и PHP, которые мы сказали. Я точно знаю, сколько сотрудников в массиве, поэтому он останавливается, как только доходит до конца. Я уверен, что вы видите, насколько это может быть полезным.
Дополнительные ресурсы
Хотя этот урок может показаться «раскрывающим всю мощь массивов и циклов», на самом деле он просто царапает поверхность. Я настоятельно рекомендую всем, кто заинтересован (и это означает, что ВЫ, если вы все еще читаете это), прочитайте онлайн-документацию по PHP для используемой версии. Вы можете найти их на php.net . В этом уроке мы использовали только один тип цикла — цикл foreach . Есть и другие, такие как for , do … while и while, которые вы также получите от знания.