powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Можно ли отсортировать массив по двум ключам?
6 сообщений из 6, страница 1 из 1
Можно ли отсортировать массив по двум ключам?
    #39216850
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть выборка из БД, возвращающая список страниц. Выборка отсортирована по дате их создания. Необходимо отсортировать её ещё сначала по томам а затем по главам. Добавить сортировку в запрос не получается, т.к. значения сравниваются как строки, и получается следующее: идёт глава 1, за ней 11, 12, ... 19, 2, 20... Пытаюсь использовать array_multisort пример взял отсюда .
Вот, собственно, код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    public function chapters()
    {
        return $this->hasMany('Chapter')->orderBy('created_at', 'desc');
    }

    public function sortedChapters() {
        $chapters = $this->chapters()->get();
	foreach($chapters as $key => $cols){
		$volume[$key] = $cols["Volume"];
		$number[$key] = $cols["Number"];
	}
		array_multisort($volume, SORT_DESC, $number, SORT_ASC, $chapters);

		return $chapters;
	}


Получаю вот такую ошибку:
[2016-04-15 14:27:01] production.ERROR: exception 'ErrorException' with message 'array_multisort(): Argument #3 is expected to be an array or a sort flag' in /home/viktor/test.emanga.ru/mymangacms_base/app/models/Manga.php:89

Разве $chapters не является массивом? И вообще, можно ли таким способом решить задачу?

P.S. Используется фреймворк aravel.
...
Рейтинг: 0 / 0
Можно ли отсортировать массив по двум ключам?
    #39216964
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай var_dump($chapters) и посмотри что там. Кажется мне что там массив объектов. И сортировку можно в запросе сделать, если по извращаться немного
...
Рейтинг: 0 / 0
Можно ли отсортировать массив по двум ключам?
    #39216996
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

Власне, тут є декілька моментів:

1) Ніяких array_multisort() не потрібно тут - треба лише правильний запит виконати;
2) Методи для вибірок у Вас розташовані не там, де потрібно - модель про них не має нічого знати;
3) нащо було сортувати одразу в hasMany() по даті створення, якщо потім треба сортувати по іншому?
...
Рейтинг: 0 / 0
Можно ли отсортировать массив по двум ключам?
    #39217038
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouse1) Ніяких array_multisort() не потрібно тут - треба лише правильний запит виконати;

А как?
MikkiMouse2) Методи для вибірок у Вас розташовані не там, де потрібно - модель про них не має нічого знати;

Где его нужно применить?
MikkiMouse3) нащо було сортувати одразу в hasMany() по даті створення, якщо потім треба сортувати по іншому?

Это уже было сделано до меня - меня попросили добавить сортировку по тому и главе.
...
Рейтинг: 0 / 0
Можно ли отсортировать массив по двум ключам?
    #39217039
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu, а как "поизвращаться"?
...
Рейтинг: 0 / 0
Можно ли отсортировать массив по двум ключам?
    #39217439
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxapet,

Код: sql
1.
ORDER BY string_value + 0
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Можно ли отсортировать массив по двум ключам?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]