Yii2 ArrayHelper. Частина 2

428

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій статті ми познайомимося з класом-помічником Yii2 ArrayHelper. Даний хэлпер пропонує набір методів для зручної роботи з масивами.

Отже, ми продовжуємо знайомитися з помічником по роботі з масивами yii\helpers\ArrayHelper. У попередній статті ми розглянули три методу хэлпера: map, getColumn і index, які на мій погляд, можуть доволі часто знадобитися в роботі. Завдяки зручності використання, ми можемо вибрати з масиву потрібну колонку ключів, переіндексувати масив або взяти з масиву потрібні елементи, створюючи новий масив. Дуже зручно.

Дану статтю ми почнемо з методу multisort, який пов’язаний з початком сортування масивів. Метод multisort дозволяє сортувати масиви потрібного ключа або навіть з кількох ключів одночасно. Давайте спробуємо. Візьмемо той же масив категорій з попередньої статті:

Yii2 ArrayHelper. Частина 2

І відсортуємо його по найменуванню категорій:

ArrayHelper::multisort($cats, ‘name’);

Yii2 ArrayHelper. Частина 2

В якості третього додаткового параметра ми можемо передати константу, що відповідає за напрямок сортування: SORT_ASC або SORT_DESC. За замовчуванням це SORT_ASC, тобто прямий порядок сортування. Давайте сортуємо масив у зворотному порядку.

ArrayHelper::multisort($cats, ‘name’, SORT_DESC);

Yii2 ArrayHelper. Частина 2

В якості другого і третього параметрів ми можемо передавати і масиви. В цьому випадку все відбувається рівно так, як у мові SQL, коли ми сортуємо за більш ніж одного поля, тобто спочатку сортування виконується по полю, переданим першим елементом масиву, а всередині групи вже відбувається сортування за другим критерієм.

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

$books = [
[‘title’ => ‘Айвенго’, ‘year’ => 2017],
[‘title’ => ‘Три мушкетери’, ‘year’ => 2015],
[‘title’ => ‘Три товстуни’, ‘year’ => 2015],
[‘title’ => ‘Три горішка для Попелюшки’, ‘year’ => 2015],
];
ArrayHelper::multisort($books, ‘year’);

Yii2 ArrayHelper. Частина 2

А тепер всередині групи книг за 2015 рік проведемо додаткову сортування по назві, наприклад у зворотному порядку. Записується це наступним чином:

ArrayHelper::multisort($books, [‘year’, ‘title’], [SORT_ASC, SORT_DESC]);

Yii2 ArrayHelper. Частина 2

Думаю, суть роботи функції зрозуміла. Ще пара корисних методів, про які я хочу сказати кілька слів, — це методи htmlEncode і htmlDecode, які кодуй і декодують спеціальні символи, відповідно. Як ви вже здогадалися, дані методи в своїй роботі використовують відповідні PHP функції htmlspecialchars і htmlspecialchars_decode.

Для прикладу створимо масив з парою спеціальних символів і спробуємо вивести його як є, а після спробуємо застосувати метод htmlEncode і вивести ще раз:

$array = [‘&’, ‘”‘];
print_r($array);
$array = ArrayHelper::htmlEncode($array);
print_r($array);

Якщо поглянути на сторінку в браузері, то різниці ми не побачимо:

Yii2 ArrayHelper. Частина 2

Але якщо відкрити вихідний код сторінки, то ми побачимо, що htmlEncode перетворив спеціальні символи в HTML-суті:

Yii2 ArrayHelper. Частина 2

Все просто! На цьому ми сьогодні завершимо статтю. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.