Appearance
ArrayHelper - класс для работы с массивами
Содержит некоторые часто встречающиеся инструменты для работы с массивами/
Объект в массив
public static function toArray(mixed $mObject, array $arProperties = array(), bool $bRecursive = true): array Переводит переменную типа объект $mObject в массив (По умолчанию - рекурсивно).
Также можно добавить в результирующий массив свойства объекта $arProperties
Пример использования
php
$obObject = new stdClass();
$obObject->foo = new stdClass();
$obObject->foo->foo1 = 'bar1';
$obObject->foo->foo2 = 'bar2';
$obObject->bar = new stdClass();
$obObject->bar->bar1 = 'foo1';
$obObject->bar->bar2 = 'foo2';
$arResult = \Realweb\Api\Model\Utils\ArrayHelper::toArray($obObject);
//array(2) {
// ["foo"]=> array(2) {
// ["foo1"]=> string(4) "bar1"
// ["foo2"]=> string(4) "bar2"
// }
// ["bar"]=> array(2) {
// ["bar1"]=> string(4) "foo1"
// ["bar2"]=> string(4) "foo2"
// }
//}Объединение массивов
public static function merge(array $arA, array $arB): array
Рекурсивно объединяет 2 массива в один
Пример использования
php
$arArray1 = array(
'foo' => array(
'foo1' => 'bar1',
'foo2' => 'bar2',
),
'bar' => array(
'bar1' => 'foo1',
'bar2' => 'foo2',
),
);
$arArray2 = array(
'foo' => array(
'foo1' => 'bar1',
'foo5' => 'bar5',
),
'foobar' => array(
'foobar1' => 'foobar1',
'foobar2' => 'foobar2',
),
);
$arResult = \Realweb\Api\Model\Utils\ArrayHelper::merge($arArray1, $arArray2);
//array(3) {
// ["foo"]=> array(3) {
// ["foo1"]=> string(4) "bar1"
// ["foo2"]=> string(4) "bar2"
// ["foo5"]=> string(4) "bar5"
// }
// ["bar"]=> array(2) {
// ["bar1"]=> string(4) "foo1"
// ["bar2"]=> string(4) "foo2"
// }
// ["foobar"]=> array(2) {
// ["foobar1"]=> string(7) "foobar1"
// ["foobar2"]=> string(7) "foobar2"
// }
//}Поиск по ключу
public static function getValue(array $arArray, mixed $mKey, mixed $mDefault = null): mixed
Поиск и получение значения в массиве по ключу. Позволяет искать значения на любом "уровне" массива используя разделитель "."
Пример использования
php
$arArray = array(
'foo'=>array(
'foo1'=>'bar1',
'foo2'=>'bar2',
'foo3'=>'bar3',
),
'bar'=>array(
'bar1'=>'foo1',
'bar2'=>'foo2',
'bar3'=>'foo3',
),
);
$mResult = \Realweb\Api\Model\Utils\ArrayHelper::getValue($arArray,"foo");
/**
* array(3)
* [
* "foo1" => string(4) "bar1"
* "foo2" => string(4) "bar2"
* "foo3" => string(4) "bar3"
* ]
*/
$mResult = \Realweb\Api\Model\Utils\ArrayHelper::getValue($arArray,"foo.foo1");
//bar1
$mResult = \Realweb\Api\Model\Utils\ArrayHelper::getValue($arArray,"bar.bar2");
//foo2Установка значения
public static function setValue(array &$arArray, $strPath, mixed $mValue): void
Установка значения массива по ключу. Можно использовать любую вложенность
Если ключа не было в массиве - он появится
Пример использования
php
$arArray = array(
'foo'=>array(
'foo1'=>'',
'foo2'=>'bar2',
'foo3'=>'bar3',
)
);
\Realweb\Api\Model\Utils\ArrayHelper::setValue($arArray,"foo.foo1","bar1");
\Realweb\Api\Model\Utils\ArrayHelper::setValue($arArray,"foo1.foo1","bar1");
/**
array(2)
[
"foo" => array(3)
[
"foo1" => string(4) "bar1"
"foo2" => string(4) "bar2"
"foo3" => string(4) "bar3"
]
"foo1" => array(1)
[
"foo1" => string(4) "bar1"
]
]
*/Удаление элемента
public static function remove(array &$arArray, mixed $mKey, mixed $mDefault = null)
Удаляет элемент массива и возвращает его. Если элемент не найден в массиве - возвращает дефолтное значение (По умолчанию null)
Пример использования
php
$arArray = array(
'foo'=>array(
'foo1'=>'',
'foo2'=>'bar2',
'foo3'=>'bar3',
)
);
\Realweb\Api\Model\Utils\ArrayHelper::setValue($arArray,"foo.foo1","bar1");
\Realweb\Api\Model\Utils\ArrayHelper::setValue($arArray,"foo1.foo1","bar1");
/**
array(2)
[
"foo" => array(3)
[
"foo1" => string(4) "bar1"
"foo2" => string(4) "bar2"
"foo3" => string(4) "bar3"
]
"foo1" => array(1)
[
"foo1" => string(4) "bar1"
]
]
*/Сортировка
public static function multisort(array &$arArray, mixed $mKey, int $iDirection = SORT_ASC, int $iSortFlag = SORT_REGULAR): void
Сортирует элементы массива или объекта по одному или нескольким ключам.
Пример использования
php
$arArray = array(
'foo'=>array(
'sort'=>1,
),
'foo1'=>array(
'sort'=>2,
)
);
\Realweb\Api\Model\Utils\ArrayHelper::multisort($arArray, 'sort', SORT_DESC);
/**
array(2)
[
"foo1" => array(1)
[
"sort" => int 2
]
"foo" => array(1)
[
"sort" => int 1
]
]
*/