Yii2. Получение значения массива с ArrayHelper


Работа с массивами и объектами при помощи встроенных хелперов Yii2 — одно удовольствие. Сегодня рассмотрим, как можно удобно получать данные с массивов или объектов, при помощи ArrayHelper.

Рассмотрите следующий код:

class Auto
{
    public $firm = 'Renault';
}

$array = [
    'foo' => [
        'bar' => new Auto(),
    ]
];

$value = isset($array['foo']['bar']->firm) ? $array['foo']['bar']->firm : null;

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

$value = ArrayHelper::getValue($array, 'foo.bar.firm');

Упрощение на лицо. Метод getValue() может принимать следующие параметры:
— массив (объект), с которого будет извлекаться
— метод определяющий способ получения данных с массива:
— ключ массива, который следует вернуть
— путь к целевому значению (разделен точками), как в примере выше
— callback-функция, возвращающая значение.

Пример callback-функции:

$autoName = ArrayHelper::getValue($auto, function ($auto, $defaultValue) {
    return $auto->firm . ' ' . $auto->model;
});

Метод возвращает два значения, при этом это происходит в одну строку, что существенно сокращает код.

— параметр по умолчанию, на случай если значение не будет получено. Параметр не обязателен и по умолчанию равен null.

Если Вам нужно получить элемент и сразу же удалить его с массива — воспользуйтесь методом remove.

$array = ['a' => 'AAA', 'b' => [1, 2]];
$a = ArrayHelper::remove($array, 'a');

После этого в переменной $a будет значение ‘AAA’, а в массиве $array — [ ‘b’ => [1, 2]].

,

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

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