Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> вопрос о array_multisort();
dadli  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



ХОЧУ СТАТь "ЭКСПЕРТОМ", НО ПОКА НЕ БЛИЖЕ
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 828
Пользователь №: 26787
На форуме: 6 лет, 2 месяца, 17 дней
Карма: 50

Не курю:
6 лет, 7 месяцев, 17 дней


здравствуите

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


--------------------


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

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса