Yii2 ArrayHelper. Часть 2

Yii2 ArrayHelper

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы познакомимся с классом-помощником Yii2 ArrayHelper. Данный хэлпер предлагает набор методов для удобной работы с массивами.

Итак, мы продолжаем знакомиться с помощником по работе с массивами yii\helpers\ArrayHelper. В предыдущей статье мы изучили три метода хэлпера: map, getColumn и index, которые на мой взгляд, могут довольно часто понадобиться в работе. Благодаря удобству использования, мы можем выбрать из массива нужную колонку ключей, переиндексировать массив или взять из массива нужные элементы, создавая новый массив. Очень удобно.

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

Yii2 ArrayHelper

И отсортируем его по наименованию категорий:

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
ArrayHelper::multisort($cats, 'name');

Yii2 ArrayHelper

В качестве третьего необязательного параметра мы можем передать константу, отвечающую за направление сортировки: SORT_ASC или SORT_DESC. По умолчанию это SORT_ASC, т.е. прямой порядок сортировки. Давайте сортируем массив в обратном порядке.

ArrayHelper::multisort($cats, 'name', SORT_DESC);

Yii2 ArrayHelper

В качестве второго и третьего параметров мы можем передавать и массивы. В этом случае все происходит ровно так, как в языке SQL, когда мы сортируем по более чем одному полю, т.е. вначале сортировка производится по полю, переданному первым элементом массива, а внутри группы уже происходит сортировка по второму критерию.

Наш массив не подходит для такой сортировки, поэтому, чтобы стала понятнее суть, я создам для данного примера тестовый массив книг, в котором будет храниться наименование книги и год ее издания. После этого сортируем массив по году:

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

Yii2 ArrayHelper

А теперь внутри группы книг за 2015 год проведем дополнительную сортировку по наименованию, к примеру в обратном порядке. Записывается это следующим образом:

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

Yii2 ArrayHelper

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

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

$array = ['&', '"'];
print_r($array);
$array = ArrayHelper::htmlEncode($array);
print_r($array);

Если взглянуть на страницу в браузере, то разницы мы не увидим:

Yii2 ArrayHelper

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

Yii2 ArrayHelper

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree