

ХОЧУ СТАТь "ЭКСПЕРТОМ", НО ПОКА НЕ БЛИЖЕ
     
Профиль
Группа: Форумчанин

Сообщений: 828
Пользователь №: 26787
На форуме: 14 лет, 9 дней
Карма: 50
Не курю: 14 лет, 5 месяцев, 10 дней

|
здравствуите что-то не понимаю принцип работи 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 ); тогда все ключевые расположения сохранятся, и данные будут всегда у каждого свои. Примерно так. Спустя 7 минут, 45 секунд (3.02.2012 - 16:57) walerus написал(а): Да ), именно от туда, окей, не ерунду, но я не так хотел выразиться
--------------------
когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.
|