Вчимо PHP з нуля: масиви та цикли (частина 2)

15

Від автора:Повертаючись до того місця, де закінчилася Частина 1 цієї серії публікацій, наш підручник продовжить вести вас через основи роботи з масивами та циклами PHP. Викладання основних правил буде вестися з паралельним розглядом прийомів роботи, які використовуються в популярному софті, такому як WordPress.

Короткий огляд

Новачкам: Щоб повністю зрозуміти ці ідеї, настійно рекомендується спочатку прочитати Частина1. Частина 2 цієї серії прояснює використання основних принципів PHP, допомагають у щоденному кодуванні, включаючи створення і використання масивів та циклів для зберігання і пошуку даних тоді, коли це необхідно.

Створення масивів в PHP

Масиви PHP – це те, до чого ви приходьте, коли знову і знову створюєте подібні змінні. При зверненні до вмісту масиву використовуються два слова. Ці слова — «key» (ключ) і «value» (значення). Кожен масив PHP при його створенні, має принаймні один ключ і одне значення. Вони завжди знаходяться у парах, так як ключ використовується для посилання на значення. Існує три типи масивів: асоціативні, числові і багатовимірні. Багатовимірні масиви – це просто масиви всередині масивів. Давайте коротко розглянемо два перших типи.

Асоціативний масив

Асоціативний масив корисний у тому випадку, коли key («ключ»), де-то певний програмістом, використовується для знаходження значень. Наприклад, я створю масив, що містить мою особисту інформацію. Нижче ви побачите два способи запису оголошення масиву в коді PHP. Відмінність другого способу полягає лише в організації і полегшення читання. Як згадувалося у Частині 1 серії публікацій, PHP не сприйнятливий до прогалин.

«Erik Reagan»,»occupation»=>»Web Developer»,»location»=>»Savannah, GA, USA»);
?>
‘Erik Reagan’,
‘occupation’ => ‘Web Developer’,
‘age’ => 23,
‘location’ => ‘Savannah, GA, USA’
);
?>

Це здорово і все таке, але як мені змусити інформацію відображатися в HTML? Радий, що ви запитали про це! Це дуже схоже на висновок змінної, тільки тут ви додаєте ще трохи даних: ключ.

My name is and I am in a and am years old.

Почекайте секундочку! Що це раптом за плутанина: ? Використання — це скоропис в PHP ось чого: . З першої частини ви дізналися, що команда echo (відображати) схожа з print (друкувати) в інших мовах. PHP-скоропис є всього лише одним із способів написання в процесі роботи меншої кількості коду.

Числові масиви

Іноді вам усередині масиву не потрібний текст, асоційований зі значеннями. У цьому випадку ви використовуєте числовий масив, який насправді створюється в PHP за замовчуванням. Вище ми використовували знак рівності, за яким слідував знак «більше» (=>), для присвоєння значень масиву його ключів. При використанні числових масивів ви просто вказуєте значення, а ключ передбачається инкрементальным. Давайте подивимося:

‘Erik Reagan’,
‘occupation’ => ‘Web Developer’,
‘age’ => 23,
‘location’ => ‘Savannah, GA, USA’
);
$fruit = array(‘apple’,’orange’,’grapes’);
?>

Як ви можете бачити, ми нічого не зробили, крім того, що вказали значення. PHP замість нас подбав про ключі. Ключі ЗАВЖДИ починаються з цифри 0 і збільшуються на 1 з кожним новим елементом масиву. У процесі більш глибокого вивчення масивів ви дізнаєтеся, що це правило можна змінювати на свій розсуд – але сьогодні ми не проходимо. «Звідки я дізнаюся, який ключ потрібно використовувати», — можете запитати ви. Найпростіше в нашому прикладі почати рахувати з нуля і знайти свій елемент. Наприклад, ключ для «apple» — це 0, ключ для «orange» – 1, а ключ для «cherry» — 2. Ха, досить просто! Правда, іноді ваші масиви будуть ставати величезними і дійдуть до десятків а, можливо, і сотень елементів. Ніхто не захоче сидіти і рахувати все це неподобство. Вашим першим інстинктивним поривом може стати бажання виконати «echo $fruit», але він видасть лише слово «Array». PHP забезпечує нам кілька простих способів переглядати дані масиву. Давайте розглянемо два з них.

‘Erik Reagan’,
‘occupation’ => ‘Web Developer’,
‘age’ => 23,
‘location’ => ‘Savannah, GA, USA’
);
$fruit = array(‘apple’,’orange’,’grapes’);
print_r($personalInfo);
var_dump($im);
?>

Зверніть увагу, що при запуску усього цього ваш браузер може видати щось досить відразливого вигляду. Перший масив буде особливо непривабливим і, можливо, важким для прочитання. Користь може принести вставка тегів

навколо цих двох команд таким чином, що пробіл буде правильно попередньо відформатовано. Припустимо, що ви розмістили теги навколо команди, тоді вам у відповідь повинно з’явитися наступне:

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. Все, що у лапках, вважається string (рядок), а у випадку даних для «age» — це integer (ціле). Я не буду вдаватися у деталі інших видів даних, але загострюю на цьому вашу увагу, тому що функція var_dump() дає вам додаткову корисну інформацію.

Зверніть увагу на першу частину, розташовану в першому рядку: «array(4)». Це перша частина висновку, що повідомляє: «Це масив, і він містить 4 елемента даних». Переходячи до наступного рядка, ви отримуєте ключ, бачите перший ключ, а потім повідомлення: «string(11)». Що значить: «Це — рядок довжиною в 11 знаків» (пам’ятаєте, що пробіл вважається знаком). Зверніться до ключа «age» і зауважте, що для нього виводиться «int(23)». Цей вираз означає: «Це – ціле зі значенням 23».

Тепер, коли ви знаєте, як використовувати print_r() і var_dump(), ми зможемо перейти до виконання циклів за цими даними.

Багатовимірні масиви

Як уже про це говорилося, багатовимірний масив – це просто масив, який містить у собі принаймні один додатковий масив в якості значення. Я продовжу прикладом «personalInfo» та створю масив для штату співробітників.

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. Перший ключ в цьому масиві називається ‘info’ і його значення фактично — асоціативний масив, що містить інформацію про компанії. Другий ключ нашого масиву $company – це ‘staff’ (штатний розклад), і його значення числовий масив. Давайте перед початком роботи подивимося на його структуру. Запуск print_r($company) зробить наступне:

Array
(
[info] => Array
(
[name] => Awesome Web Company
[locatіon] => Savannah, GA
[сайт] => 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
)
)
)

Тепер наша інформація про компанії готова до використання. Ми вибираємо інформацію з внутрішнього масиву тим же способом, як раніше з масиву особистої інформації.

Ось приклад використання даних з цього багатовимірного масиву:

Located in and online at .

Our CEO

Тепер, коли ми вже освоїли масиви, давайте перейдемо до циклів, які скоротять до мінімуму час, який ми витрачаємо на аналіз даних масиву.

Цикли в PHP

Цикли в PHP стають вельми корисними, коли зростає кількість даних, з якими ви працюєте. Ми вже розібралися з масивами, що, природно, веде нас до циклів. В останньому уривку коду ми привели список співробітників компанії всередині масиву $company. Що, якщо нам потрібно циклічно обробляти кожного співробітника компанії і виводити інформацію на дисплей у вигляді уніфікованого? Ну, справа тоді вступає цикл PHP foreach. Як видно з назви оператора, він буде виконувати вказану дію для кожного з елементів усередині масиву або об’єкта. Зазвичай це виглядає так:

$value) {
…some code here
}
?>

Зверніть увагу, що до цього оператора відносяться три змінні. Перша – це просто масив, з яким ми працюємо. Друга і третя змінні визначаються ВАМИ і можуть повідомляти все, що потрібно. Ці змінні використовуються для позначення масиву даних всередині фігурних дужок. Ми через мить це побачимо. Але спочатку, як команда echo має умовне позначення або альтернативний синтаксис, так і foreach має щось, що допомагає перетинатися PHP і HTML. Таким чином, код залишається настільки простим, наскільки це можливо. Виглядає це так:

$value) : ?>

Some html and some php will go here

Ви також побачите аналогічний формат в операторах if і циклах while (в WordPress, наприклад). Тепер, коли ми обговорили формат цього оператора, давайте подивимося його в роботі. Повертаючись до масиву інформації про компанії, давайте побудуємо з цими даними яку-небудь симпатичну сторінку.

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’)
)
);
?>

Located in and online at .

Our Staff

  • is our

У цьому прикладі цикл foreach проходить по кожному співробітнику і виводить той HTML і PHP, який ми від нього очікуємо. Мені не потрібно точно знати, скільки співробітників записано в масиві, щоб зупинитися, коли перебір підійде до кінця. Я впевнений, що ви можете зрозуміти, наскільки це може бути корисно.

На цьому другий урок з вивчення PHP, присвячений створенню масивів та циклів в PHP, завершуємо.

Переклад і редакція: Ріг Віктор і Андрій Бернацький. Команда webformyself.

E-mail: [email protected]

Проект webformyself.com — Як створити свій сайт. Основи самостійного сайтобудування

P. S. Хочете опублікувати цікавий тематичний матеріал і заробити? Якщо відповідь «Так», то тисніть сюди.