Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 50

Сортировка массива по нескольким параметрам

28.06.2015, 01:04. Показов 2616. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
В цикле формируется массив:

PHP
1
2
 $TableArr[] = array("kod_team"=>"kod_$team", "team"=>"$team", "kolgame"=>"$kolgame", "win"=>"$win", "win_ot"=>"$win_ot",
      "lose"=>"$lose", "lose_ot"=>"$lose_ot", "nich"=>"$nich", "puck"=>"$zabr-$prop", "raz"=>"$raz", "ochki"=>"$ochki");
Необходимо его отсортировать по убыванию сначала по полю "ochki", за тем те значения "ochki" которые равны необходимо отсортировать по убыванию по полю "raz". Подскажите как это сделать? Спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.06.2015, 01:04
Ответы с готовыми решениями:

Сделать поиск по нескольким параметрам
всем привет. Такого рода вопрос. Как реализовать поиск по параметрам? На данный момент у меня есть просто поиск, работает. Мне нужно...

Сортировка по 2-ум параметрам
Всем привет. В общем столкнулся с некой проблемой, может кто-то поможет? И так имеется массив $search_data7; В нем есть поля $row -...

Сортировка массива, по нескольким параметрам
Здравствуйте, необходимо создать структуру для хранения записей некой таблицы БД. Структура должна иметь 4-6 разнотипных поля. Как я...

7
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
28.06.2015, 08:26
Цитата Сообщение от sponfin Посмотреть сообщение
Необходимо его отсортировать по убыванию сначала по полю "ochki", за тем те значения "ochki" которые равны необходимо отсортировать по убыванию по полю "raz". Подскажите как это сделать? Спасибо!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// Создаю исходный массив.
$a = [];
for ($i = 0; $i < 20; $i++)
    $a[] = ["ochki" => rand(0, 10), "raz" => rand(0, 10)];
 
// Вывожу исходный массив
echo "<h3>Исходный массив:</h3>";
for ($i = 0; $i < 20; $i++)
    echo sprintf("%02d. ochki = %02d, raz = %02d<br>", $i, $a[$i]["ochki"], $a[$i]["raz"]);
 
// Сортирую массив
usort($a, function($x, $y)
    {
        return $x["ochki"] > $y["ochki"] ? 1
            : ($x["ochki"] < $y["ochki"] ? -1
            : ($x["raz"] > $y["raz"] ? 1
            : ($x["raz"] < $y["raz"] ? -1
            : 0)));
    });
 
// Вывожу отсортированный массив
echo "<h3>Отсортированный массив массив:</h3>";
for ($i = 0; $i < 20; $i++)
    echo sprintf("%02d. ochki = %02d, raz = %02d<br>", $i, $a[$i]["ochki"], $a[$i]["raz"]);
0
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 50
28.06.2015, 13:49  [ТС]
Да. получилось. Но только нужно, чтобы он по убыванию сортировал
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
28.06.2015, 14:06
Цитата Сообщение от sponfin Посмотреть сообщение
Да. получилось. Но только нужно, чтобы он по убыванию сортировал
В двух местах замените 1 на -1, а -1 на 1
0
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 50
28.06.2015, 14:11  [ТС]
Спасибо! А можно еще немного усложню вопрос. Нужно чтобы элемент массива с ключем kolgame, если его значение равно 0, всегда был последним после сортировки?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
28.06.2015, 14:31
Лучший ответ Сообщение было отмечено insideone как решение

Решение

sponfin,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
// Создаю исходный массив.
$a = [];
for ($i = 0; $i < 20; $i++)
    $a[] = ["ochki" => rand(0, 5), "raz" => rand(0, 5), "kolgame" => rand(0, 3)];
 
// Вывожу исходный массив
echo "<h3>Исходный массив:</h3>";
for ($i = 0; $i < 20; $i++)
    echo sprintf("%02d. ochki = %02d, raz = %02d, kolgame = %02d<br>", $i, $a[$i]["ochki"], $a[$i]["raz"], $a[$i]["kolgame"]);
 
// Сортирую массив
usort($a, function($x, $y)
    {
        if ($x["kolgame"] == 0 && $y["kolgame"] != 0)
            return 1;
        if ($x["kolgame"] != 0 && $y["kolgame"] == 0)
            return -1;
        return $x["ochki"] > $y["ochki"] ? -1
            : ($x["ochki"] < $y["ochki"] ? 1
            : ($x["raz"] > $y["raz"] ? -1
            : ($x["raz"] < $y["raz"] ? 1
            : 0)));
    });
 
// Вывожу отсортированный массив
echo "<h3>Отсортированный массив массив:</h3>";
for ($i = 0; $i < 20; $i++)
    echo sprintf("%02d. ochki = %02d, raz = %02d, kolgame = %02d<br>", $i, $a[$i]["ochki"], $a[$i]["raz"], $a[$i]["kolgame"]);
1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 50
28.06.2015, 14:36  [ТС]
Спасибо! все работает!! Еще бы понять что тут как)))
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
28.06.2015, 19:00
пожалуйста...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2015, 19:00
Помогаю со студенческими работами здесь

Сортировка по нескольким параметрам IComparable<T>
Встал вопрос с сортировкой по двум и более свойствам при реализации IComparable&lt;T&gt;. С одним полем все ясно-понято. Ниже пример где...

Сортировка datatable по нескольким параметрам
Привет, подскажите пожалуйста, я сортирую таблицу с помощью свойства RowFilter и все нормально было, но попросили переделать и сделать...

Сортировка по нескольким параметрам в List<T>
Как сортировка по нескольким параметрам в List&lt;T&gt; La.Sort((a, b) =&gt; a.fam.CompareTo(b.fam)); - это с одним параметром работает хорошо ...

Сортировка огромного списка по нескольким параметрам
Всем привет, в общем проблема, имеется List с кол-вом элементов порядка 58к. Лист состоит из объектов класса, которые имеют параметры...

Сортировка массивов по нескольким параметрам. Исправить ошибку в коде
Здравствуйте. Нужна помощь. Моя задача: задан массив, содержащий сведения о металлах. Для каждого материала указаны: название, плотность,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru