Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій статті ми познайомимося з класом-помічником Yii2 ArrayHelper. Даний хэлпер пропонує набір методів для зручної роботи з масивами.
Масиви і об’єкти — це те, з чим ми працюємо досить часто. І PHP пропонує нам багатий набір нативних функцій, які допомагають вирішувати широке коло завдань. Однак у своїй практиці ми стикаємося з різними завданнями і навіть цього багатства функцій буває мало. У цьому випадку ми змушені писати власні методи, що дозволяють вирішити поставлені завдання.
І тут хорошим помічником буде клас yii\helpers\ArrayHelper, який має в своєму арсеналі майже два десятки методів для роботи з масивами. Давайте ж познайомимося з деякими з цих методів.
Для початку давайте отримаємо деякий масив, з яким і будемо далі експериментувати. Виберемо всі записи з моделі категорій:
$cats = Category::find()->asArray()->all();
І передамо в уявлення, де просто роздрукуємо на екран:
В результаті ми побачимо приблизно такий масив:
Звичайний багатовимірний масив, з яким ми і попрацюємо. Почнемо з вилучення стовпців і методу getColumn, який і дозволить нам отримати всі значення конкретного ключа в окремий масив. Давайте отримаємо найменування категорій:
$cats = ArrayHelper::getColumn($cats, ‘name’);
Першим параметром ми передали вхідний масив, другим параметром — ключ, значення якого необхідно отримати. А ось і результат:
Непогано, чи не так? Ніяких додаткових циклів, де б ми змушені були формувати новий масив з потрібних елементів колишнього. Виклик вже готового методу і — результат.
Йдемо далі. Повернемо вихідний масив і спробуємо вказати потрібні нам індекси для нього, наприклад ID категорій. Для цього Yii пропонує метод index, якому ми також передамо аналогічні два параметри.
$cats = ArrayHelper::index($cats, ‘id’);
В результаті ключі масивів категорій були переиндексированы у відповідності з нашими вимогами:
І останній корисний метод, з якими ми сьогодні познайомимося, — це метод map. Цей метод дозволяє на основі вхідного масиву створити новий, де ключами і значеннями будуть значення зазначених ключів вхідного масиву. Напевно, буде простіше зрозуміти на прикладі. Давайте побудуємо новий масив, взявши з попереднього в якості ключів значення id, а в якості значень візьмемо значення name.
$cats = ArrayHelper::map($cats, ‘id’, ‘name’);
Результат кілька похід на результат роботи методу getColumn, який ми використовували вище, але map в якості ключів взяв саме значення id.
На цьому поки що зупинимося. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.