Я изо всех сил пытаюсь сортировать массив с помощью обычных функций, я уверен, что для этого нужна пользовательская функция сравнения, но тем не менее она будет отбрасывать ее.
У меня есть массив с 5 элементами внутри него. Я бы хотел, чтобы массив сортировал себя так, arsort приблизился, но не совсем:
4,0,1,2,3
Просто чтобы уточнить, позиция массива вроде: $ array [0];
Я до сих пор не смотрел на функции сравнения массива, поэтому для решения этой проблемы было бы очень полезно толчок в правильном направлении!
Благодаря,
Адам
Этот метод будет сортировать массив, используя предопределенный порядок ключей, используя uksort
$desiredIndexOrder = array(4 => 1, 0 => 2, 1 => 3, 2 => 4, 3 => 5); uksort($inputArray, function($a, $b) use ($desiredIndexOrder) { return $desiredIndexOrder[$a] > $desiredIndexOrder[$b] ? -1 : 1; });
Обратите внимание, что массив $desiredIndexOrder
находится в index => desired sort position
формат index => desired sort position
. Если вы не хотите помещать свой массив в этот формат, вы можете создать его для вас, используя это:
$desiredIndexOrder = array(); foreach ($desiredKeyOrder as $position=>$key) { $desiredIndexOrder[$key] = $position + 1; }
Где $desiredKeyOrder
– это порядок массивов ваших ключей: array(4, 0, 1, 2, 3)
Попробуй это :
$numbers = array(1,2,3,4,5); array_unshift($numbers, array_pop($numbers)); echo "<pre>"; print_r($numbers);
Вывод :
Array ( [0] => 5 [1] => 1 [2] => 2 [3] => 3 [4] => 4 )
Попробуй это
$array = array('t','r','a','c','k'); $keys = '4,0,1,2,3'; $keyArr = explode(',', $keys); $sarr = array(); foreach ($keyArr as $key) { $sarr[$key] = $array[$key]; } print_r($sarr);