Войти

Показать полную графическую версию : [решено] Сортируем строку...


stone_wings
07-04-2008, 20:30
Есть таблица.. Вид :
(кусок из таблицы)

id-|n1|n2-|n3|n4| ....
---------------------------
11|0--|0--|7--|2--| ...
---------------------------
21|2--|5--|0--|0--| ...
---------------------------
31|1--|0--|3--|0--| ...
---------------------------

Ну как то так... Вот.. Есть цыкл, в котором нужно помимо вывода переменных, выбрать из строки переменные больше нуля, и присвоить их. (Всего три переменных, к примеру $s1, $s2, $s3 (остальные же будут 100% нулями, т.е. в этих трёх переменых и будут те три значения что не нули). Получается что со строки нужно только те значения что не равны нулю.. И так что..
(Смотрим по первой строке):
$s1 = 0; (не зависимо какой n1 или n2)
$s2 = 7;
$s3 = 2;

(По третьей):
$s1 = 1;
$s2 = 3;
$s3 = 0; (не зависимо какой - n2 или n4)

(Подразумевается что выборка будет в цылке while..) И ещё, в добавок.. Если же переменных не равных нулю, меньше чем три, то добавляться должна ещё одна (любая), с нулевым значением. Теперь вопрос.. Как сделать эту выборку? Именно в while.... (Есил это вообще имеет значения.)

vadimiron
07-04-2008, 22:43
Выборку то никак и не сделаешь - надо программно выискивать ненулевые значения. В PHP есть удобные функции для работы с массивом, так что понадобится всего 1-2 строчки кода

stone_wings
07-04-2008, 22:55
Ок.. Тогда подругому. Как лучше (и можно ли) чрезе LIMIT это всё вывести. Хотя там опять же нужно отсортировать.. Эх... Какие есть идеи?

ЗЫ: На счёт пхп, в какую сторону рыть? Команда....

Busla
08-04-2008, 09:38
Я бы рыл сторону другого представления данных.
Например, использовал бы таблицу из трёх столбцов: id, n, значение

stone_wings
08-04-2008, 21:51
использовал бы таблицу из трёх столбцов: id, n, значение »
Это, как я понимаю, при добавлении данных, добавлялась бы не строка, а столбец? Не.. Я считаю это не логичный ход был бы...

Busla
09-04-2008, 12:00
как-то вы очень странно понимаете - было бы даже интересно посмотреть, как это может выглядеть :)

stone_wings
09-04-2008, 19:16
Люди с phpclub быстрей меня поняли. :)
Кому интересно то всё было довольно таки просто :
выбрали строку в массив
$array = array( n1, n2,n3,n4);
отсортировали по убыванию
$s1 = $array[0];
$s2 = $array[1];
$s3 = $array[2];
by HraKK

2Busla Нет, это вы не знаете того что в таблице, я привёл только часть её, а там дальше и переменные типа текст. И получается в точности как вы предлогаете.

Добавил: Моё имхо, в общем мы не поняли друг друга.

vadimiron
09-04-2008, 19:53
stone_wings,
В качестве оптимизации лучше просто пройтись по массиву и найти ненулевые значения, а не сортировать




© OSzone.net 2001-2012