что-то не понимаю принцип работи array_multisort();
например есть масив
$ar = array(
array(3,2,4),
array(4,1,7)
);
хочу что сортировать етот масив так:
перви елемент сортировать по возврастиню
второи - по убиваню
сделаю так:
array_multisort($ar[0], SORT_ASC,
$ar[1], SORT_DESC);
но обе елементи сортируется по возврастиню.
где я ошибаю
Спустя 24 минуты, 2 секунды (3.02.2012 - 15:24) walerus написал(а):
Свернутый текст
array_multisort
(PHP 4, PHP 5)
array_multisort -- Сортировать несколько массивов или многомерные массивы
Описание
bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )
Функция array_multisort() может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной
или несколькими размерностями. Эта функция сохраняет соответствие между ключами и соответствующими им значениями.
Входные массивы рассматриваются как столбцы таблицы, которую нужно отсортировать по строкам - такой подход напоминает поведение выражения SQL ORDER BY.
Первый массив имеет проиоритет в процессе сортировки.
Структура аргументов этой функции немного необычна, но удобна. Первым аргументом должен быть массив. Последующие аргументы могут быть как
массивами, так и значениями, определяющими порядок сортировки, приведенными в нижеследующем списке.
Значения, определяющие порядок сортировки:
* SORT_ASC - сортировать в возрастающем порядке
* SORT_DESC - сортировать в убывающем порядке
Sorting type flags:
* SORT_REGULAR - сравнивать элементы обычным образом
* SORT_NUMERIC - сравнивать элементы, как если бы они были числами
* SORT_STRING - сравнивать элементы, как если бы они были строками
Недопустимым является указание двух флагов сортировки одинакового типа после каждого массива. Флаги сортировки, переданные после аргумента массив,
применяются только к этому аргументу - перед тем, как функция начнет обрабатывать следующий массив, эти флаги снова принимают значения по
умолчаниюt SORT_ASC и SORT_REGULAR.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Процитирую, своими словами как то не понятно получалось )))
Цитата |
Сортируем, используя array_multisort(),просто указываем те массивы, которые нужно обратотать: <pre class="sh_sourceCode" rel="php"> <span class="sh_variable">$directors</span> <span class="sh_symbol">=</span> <span class="sh_function">array</span><span class="sh_symbol">(</span> <span class="sh_string">"Stanley Kubrick"</span><span class="sh_symbol">,</span> <span class="sh_string">"Alfred Hitchcock"</span><span class="sh_symbol">,</span> <span class="sh_string">"Martin Scorsese"</span> <span class="sh_symbol">);</span> <span class="sh_variable">$titles</span> <span class="sh_symbol">=</span> <span class="sh_function">array</span><span class="sh_symbol">(</span> <span class="sh_string">"Full Metal Jacket"</span><span class="sh_symbol">,</span> <span class="sh_string">"Rear Window"</span><span class="sh_symbol">,</span> <span class="sh_string">"Mean Streets"</span> <span class="sh_symbol">);</span> <span class="sh_variable">$years</span> <span class="sh_symbol">=</span> <span class="sh_function">array</span><span class="sh_symbol">(</span> <span class="sh_number">1987</span><span class="sh_symbol">,</span> <span class="sh_number">1954</span><span class="sh_symbol">,</span> <span class="sh_number">1973</span> <span class="sh_symbol">);</span> <span class="sh_function">array_multisort</span><span class="sh_symbol">(</span> <span class="sh_variable">$directors</span><span class="sh_symbol">,</span> <span class="sh_variable">$titles</span><span class="sh_symbol">,</span> <span class="sh_variable">$years</span> <span class="sh_symbol">);</span> <span class="sh_function">print_r</span><span class="sh_symbol">(</span> <span class="sh_variable">$directors</span> <span class="sh_symbol">);</span> <span class="sh_function">echo</span> <span class="sh_string">"<br />"</span><span class="sh_symbol">;</span> <span class="sh_function">print_r</span><span class="sh_symbol">(</span> <span class="sh_variable">$titles</span> <span class="sh_symbol">);</span> <span class="sh_function">echo</span> <span class="sh_string">"<br />"</span><span class="sh_symbol">;</span> <span class="sh_function">print_r</span><span class="sh_symbol">(</span> <span class="sh_variable">$years</span> <span class="sh_symbol">);</span> <span class="sh_function">echo</span> <span class="sh_string">"<br />"</span><span class="sh_symbol">;</span> </pre> Этот код отобразит: Array ( [0] => Alfred Hitchcock [1] => Martin Scorsese [2] => Stanley Kubrick ) Array ( [0] => Rear Window [1] => Mean Streets [2] => Full Metal Jacket ) Array ( [0] => 1954 [1] => 1973 [2] => 1987 ) Сначала array_multisort() сортирует значения в $directors в возрастающем порядке, затем 2 остальных так же . |
как вариант, в Вашем случае
asort($ar[0]);
arsort($ar[1]);
Спустя 12 минут, 54 секунды (3.02.2012 - 15:37) dadli написал(а):
да кожется дело в етом. почемyта ето не написано на php.net
спасибо болшое walerus
спасибо болшое walerus
Спустя 9 минут, 44 секунды (3.02.2012 - 15:47) walerus написал(а):
dadli Я там вверху ерунду написал малость (, простите ), в общем смысл как я понял в array_multisort() таков, что есть некоторое количество "зависимых" массивов
например
вот чтоб их отсортировать например по Имени, Фамилии или дате рождения,
в порядке возрастания/убывания использовать нужно мультисорт,
тогда все ключевые расположения сохранятся, и данные будут всегда у каждого свои. Примерно так.
например
$name = array ( 'Вася', 'Петя ', 'Маша ' ); // Имена
$sub_name = array ( 'Петров', 'Васильев', 'Кулачкова' );
$data = array ( '1977', '1955', '1980' );
вот чтоб их отсортировать например по Имени, Фамилии или дате рождения,
в порядке возрастания/убывания использовать нужно мультисорт,
array_multisort( $name, $sub_name, $data );
тогда все ключевые расположения сохранятся, и данные будут всегда у каждого свои. Примерно так.
Спустя 1 час, 2 минуты, 6 секунд (3.02.2012 - 16:49) dadli написал(а):
Спустя 7 минут, 45 секунд (3.02.2012 - 16:57) walerus написал(а):
Да ), именно от туда, окей, не ерунду, но я не так хотел выразиться

_____________
когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.