Статьи

Учим PHP с нуля — часть 2

Продолжая изучение первой части этой серии, этот учебник продолжит знакомство с освоением 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>

Теперь, когда у нас есть представление о массивах, давайте перейдем к циклам, которые минимизируют время, которое мы тратим на анализ данных массива.

Циклы очень пригодятся, поскольку объем данных, с которыми вы работаете, увеличивается. Мы вошли в массивы, так что, естественно, приводит нас к петлям. В последнем фрагменте кода мы перечислили сотрудника в массиве $ 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, которые вы также получите от знания.