[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос о array_multisort();
dadli
здравствуите

что-то не понимаю принцип работи 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

Спустя 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 написал(а):
walerus
почему ерунду? smile.gif ваш цитата же бил из http://php.su/functions/?array-multisort да?

Спустя 7 минут, 45 секунд (3.02.2012 - 16:57) walerus написал(а):
Да ), именно от туда, окей, не ерунду, но я не так хотел выразиться wink.gif


_____________


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

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.