22 public static function sortByColumn(array &$array, $columns,
$callbacks =
'', $defaultValueIfNotSetValue =
null, $preserveKeys =
false)
25 if (!is_array($columns))
27 $columns = array($columns => SORT_ASC);
29 $params = $preserveDataKeys = array();
30 $alreadyFillPreserveDataKeys =
false;
31 foreach ($columns as $column => &$order)
49 if($callback ===
false)
51 throw new \Bitrix\Main\ArgumentOutOfRangeException(
'callbacks');
55 $valueColumn[$column] = array();
56 foreach ($array as $index => $row)
58 $value = isset($row[$column]) ? $row[$column] : $defaultValueIfNotSetValue;
61 $value = call_user_func_array($callback, array($value));
63 $valueColumn[$column][$index] = $value;
64 if($preserveKeys && !$alreadyFillPreserveDataKeys)
66 $preserveDataKeys[$index] = $index;
70 $alreadyFillPreserveDataKeys = $preserveKeys && !empty($preserveDataKeys);
72 $params[] = &$valueColumn[$column];
73 $order = (array)$order;
74 foreach ($order as $i => $ord)
76 $params[] = &$columns[$column][$i];
79 unset($order, $column);
83 $params[] = &$preserveDataKeys;
86 call_user_func_array(
'array_multisort', $params);
90 $array = array_combine(array_values($preserveDataKeys), array_values($array));
108 $argCount = func_num_args();
109 for ($i = 0; $i < $argCount; $i += 2)
111 $anArray = func_get_arg($i);
112 $key = func_get_arg($i+1);
115 $current = &$anArray;
119 if (!is_array($current) || !array_key_exists($k, $current))
124 $current = &$current[$k];
128 if (is_array($current) || is_object($current) || $current !=
"")
132 elseif (is_array($anArray) && array_key_exists($key, $anArray))
134 if (is_array($anArray[$key]) || is_object($anArray[$key]) || $anArray[$key] !=
"")
135 return $anArray[$key];
150 if (empty($map) || !is_array($map))
154 foreach ($map as $value)
156 $value = (int)$value;
158 $result[$value] =
true;
163 $map = array_keys($result);
177 $array = array_keys($array);
179 return ($array !== array_keys($array));