php Отсортировать часть массива по образцу из другого массива -- функция
Primary tabs
Используется ArrSort::reorderSegment(): https://github.com/it-for-free/rusphp
Исходный код:
public static function reorderSegment($arr, $rightOrderedValues, $handleOriginal = null, $handleOrderedValues = null, $addToStart = true) { $result = []; $orginalFiltredArray = array_map($handleOriginal, $arr); $filtredRightOrderedValues = array_map($handleOrderedValues, $rightOrderedValues); $orderedPart = []; foreach ($filtredRightOrderedValues as $value) { if (in_array($value, $orginalFiltredArray)) { $currentKey = ArrElement::getFirstKeyForValue($orginalFiltredArray, $value); $orderedPart[$currentKey] = $arr[$currentKey]; unset($arr[$currentKey]); // убираем из исходного массива, то что "отсортировано" } } if ($addToStart) { $result = ArrMerger::mergeSavingKeys($orderedPart, $arr); } else { $result = ArrMerger::mergeSavingKeys($arr, $orderedPart); } return $result; }
(пакет легко поставить композером).
- Log in to post comments
- 1730 reads