Есть несколько массивов с одинаковыми ключами. Задача отсортировать первый по убыванию значений, а остальные отсортировать так, чтобы их ключи стали "симметричны" первому массиву не смотря на их значения Это надо для постоения турнирной таблицы.
Киньте хотя бы два примера массивов из 10 элементов, чтобы было на чем практиковаться. Попробуйте: PHP: <?php function array_prototype($subject, $prototype) { $array = Array(); foreach ($subject as $key => $value) $array[$key] = $prototype[$key]; return $array; }
Вот массив $win: Код (Text): array(8) { [22]=> int(2) [17]=> int(1) [20]=> int(0) [24]=> int(2) [23]=> int(3) [21]=> int(2) [19]=> int(1) [18]=> int(0) Остальные массивы имеют такиеже ключи, тотже порядок элементов, но другие значения этих элементов. Надо отсортировать этот массив по убыванию, чтобы получилось следующее: Код (Text): array(8) { [23]=> int(3) [21]=> int(2) [22]=> int(2) [24]=> int(2) [19]=> int(1) [17]=> int(1) [18]=> int(0) [20]=> int(0) Потом надо сделать так, чтобы у остальных массивов элементы выстроились в том же порядке, что и у этого.[/code]
В итоге пришлось самому набить массив, чтобы проверить. Функция работает. PHP: <?php $arr1 = Array(); $arr2 = Array(); for ($i = 0; $i < 10; $i++) { $arr1["arr".$i] = rand(1,15); $arr2["arr".$i] = rand(1,15); } echo 'arr1:<br>'; print_r($arr1); echo 'sort arr2:<br>'; print_r($arr2); asort($arr1); echo 'sort arr1:<br>'; print_r($arr1); function array_prototype($subject, $prototype) { $array = Array(); foreach ($subject as $key => $value) $array[$key] = $prototype[$key]; return $array; } $arr2 = array_prototype($arr1, $arr2); echo 'sort arr2:<br>'; print_r($arr2); Код (Text): arr1: Array ( [arr0] => 10 [arr1] => 10 [arr2] => 13 [arr3] => 10 [arr4] => 9 [arr5] => 4 [arr6] => 15 [arr7] => 8 [arr8] => 13 [arr9] => 13 ) arr2: Array ( [arr0] => 4 [arr1] => 7 [arr2] => 8 [arr3] => 7 [arr4] => 6 [arr5] => 12 [arr6] => 10 [arr7] => 15 [arr8] => 11 [arr9] => 4 ) sort arr1: Array ( [arr5] => 4 [arr7] => 8 [arr4] => 9 [arr3] => 10 [arr0] => 10 [arr1] => 10 [arr8] => 13 [arr2] => 13 [arr9] => 13 [arr6] => 15 ) sort arr2: Array ( [arr5] => 12 [arr7] => 15 [arr4] => 6 [arr3] => 7 [arr0] => 4 [arr1] => 7 [arr8] => 11 [arr2] => 8 [arr9] => 4 [arr6] => 10 )
Возникло небольшое усложнение. В результате моих выкрутасов с массивами потребовалось создавать вдумерные массивы. Задача такая же, но теперь надо перемешать каждый вложенный массив. Пытался переделывать функцию Kreker'a. Не вышло. Вот пример массива, на который надо "равняться" остальным массивам Код (Text): score: array(2) { [1]=> array(4) { [22]=> int(6) [24]=> int(4) [17]=> int(3) [20]=> int(1) } [2]=> array(4) { [23]=> int(9) [21]=> int(6) [19]=> int(3) [18]=> int(0) } } А вот пример массива, который надо пересортировать: Код (Text): win: array(2) { [1]=> array(4) { [22]=> int(2) [20]=> int(0) [17]=> int(1) [24]=> int(1) } [2]=> array(4) { [23]=> int(3) [19]=> int(1) [21]=> int(2) [18]=> int(0) } }