php сортировка массива по предопределенному порядку

Я изо всех сил пытаюсь сортировать массив с помощью обычных функций, я уверен, что для этого нужна пользовательская функция сравнения, но тем не менее она будет отбрасывать ее.

У меня есть массив с 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);