/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/helpers/ArrayHelper.php
142 строки
4 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\helpers; use yii\helpers\BaseArrayHelper; /** * Расширение функций для работы с массивами * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2019 */ class ArrayHelper extends BaseArrayHelper { /** * Рекурсивная сортировка многомерного массива по ключу * * @param array $array массив для сортировки * @param int $sort_flags флаг для сортировки * @return bool */ public static function ksortRecursive(&$array, $sort_flags = SORT_REGULAR) { if (!is_array($array)) { return false; } ksort($array, $sort_flags); foreach ($array as &$arr) { self::ksortRecursive($arr, $sort_flags); } return true; } /** * Рекурсивная удаление элементов в массиве по ключу * * @param array $array Исходный массив * @param array $keys Ключи, которые надо удалить из массива * @return bool */ public static function removeRecursive(&$array, $keys) { foreach ($array as $key => &$value) { if (is_array($value)) { self::removeRecursive($value, $keys); } else { foreach ($keys as $the_key) { if (is_string($key) and $key == $the_key) { unset($array[$key]); } } } } return true; } /** * Поиск максимального элемента по ключу * * @param array $array Исходный массив * @param string $prop Ключ, по которому будет вестись поиск * @return array * @author Nazar Kuksov <nazar.kuksov@sourcemates.com> * */ public static function maxAttributeInArray($array, $prop) { if (count($array) === 0) { return []; } $max = max(array_column($array, $prop)); $item = null; foreach ($array as $object) { if ($max == $object[$prop]) { $item = $object; break; } } return $item; } /** * Определение существет ли элемент в массиве * * @param string $prop Ключ, по которому будет вестись поиск * @param array $array Исходный массив * @param bool $case_sensitive Учитывать регистр при стравнении строк * @return bool * @author Nazar Kuksov <nazar.kuksov@sourcemates.com> */ public static function isInArray($prop, $array, $case_sensitive = true) { if (!$case_sensitive) { return in_array(strtolower($prop), array_map('strtolower', $array)); } return in_array($prop, $array); } /** * Поиск по массиву, как только нашли элемент возвращает родительский узел * * @param $array * @param $root * @param $search * @return mixed */ public static function findRoot($array, $root, $search) { $find = null; foreach ($array as $key => $node) { if ($node == $search) { return $root; } if (is_array($node)) { $find = self::findRoot($node, $array, $search); if ($find) { break; } } } return $find; } /** * Очистить элементы массива от пустых значений * @param $array * @return array */ public static function clear($array) { return array_diff($array, array(null, false, '')); } }