LINUX.ORG.RU

[РНР] Неправильно работает сортировка


0

0

Возникла такая проблема: необходимо отсортировать многомерный массив (обработанные данные из БД) с помощью встроенных функций PHP. Выбор пал на array_multisort. Однако при выводе результатов, при сортировке столбца со строковыми значениями, слова на кириллистическую букву «В» ставятся в конец либо в начало массива (в зависимости от порядка). Данные даны в кодировке KOI8-R. set_locale(LC_ALL, «ru_RU.KOI8-R») не помогает. Отсортировать сразу в БД нельзя.

Код:

if($_GET["order_by"] && ($_GET["order_by"] != "date")) {
	$column = array();
	foreach($vexels_table as $row) {
		$column[] = $row[$_GET["order_by"]];
	}
	if($_GET["order"] == "asc") $order_param = SORT_ASC;
	if($_GET["order"] == "desc") $order_param = SORT_DESC;
	if(($_GET["order_by"] == "issuer_raw") or ($_GET["order_by"] == "company")) $order_sort = SORT_STRING;
	if(($_GET["order_by"] == "debt_l") or ($_GET["order_by"] == "purch_l") or ($_GET["order_by"] == "sale_l")) $order_sort = SORT_NUMERIC;
	aray_multisort($column,$order_param,$order_sort,$vexels_table);
}
Какие существуют Ъ-форумы по PHP, где бы можно было задать данный вопрос?


>Отсортировать сразу в БД нельзя.

сортировать надо не в БД, а в SQL запросе. это самый просто и гибкий метод

HighwayStar ★★★★★
()

1) s/кириллистическую/кириллическую/;
2) сортировать надо в запросе.
2) if($_GET["order_by"] && <- так пишут только мудаки, man isset и empty

вобщем, у меня для тебя плохие новости...

anonymous
()
Ответ на: комментарий от teferiincub

> +1 Очень похоже что она латинская, а не кирилическая

Да, уверен.

Вставить сортировку в SQL-запрос не удастся, т.к. после селекта из базы идет дальнейшая обработка данных.

dimozg
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.