Сравнить значения столбцов
Назначение
Функция dbx_compare
сравнивает значения указанных столбцов из двух строк таблицы.
Синтаксические правила
int dbx_compare (строка1, строка2, столбец[, флаг]);
-
Строка1
-
Массив значений первой сравниваемой строки таблицы.
-
Строка2
-
Массив значений второй сравниваемой строки таблицы.
-
Столбец
-
Имя сравниваемого столбца.
-
Флаг
-
Задает направление и тип сравнения.
Возможные направления:
-
DBX_CMP_ASC
– в порядке возрастания; -
DBX_CMP_DESC
– в порядке убывания.
Возможные типы сравнения:
-
DBX_CMP_NATIVE
– без конвертации типов; -
DBX_CMP_TEXT
– сравнивать как строки; -
DBX_CMP_NUMBER
– сравнивать численно.
Одно из направлений и одна из констант типа могут комбинироваться битовой операцией OR (|)
.
Если параметр flag
не задан, по умолчанию используется значение
DBX_CMP_ASC | DBX_CMP_NATIVE.
Возвращаемое значение
Результат сравнения:
-
0, если значение
строка1[столбец]
равно значениюстрока2[столбец]
; -
1, если значение
строка1[столбец]
больше значениястрока2[столбец]
(в случае, если значение параметра флаг равноDBX_CMP_ASC
); -
-1, если значение
строка1[столбец]
меньше значениястрока2[столбец]
(в случае, если значение параметра флаг равноDBX_CMP_ASC
).
Результат сравнения меняется на противоположный при замене значения параметра флаг на DBX_CMP_DESC
.
Пример
function user_auto ($a, $b) { $rv = dbx_compare ($a, $b, "model", DBX_CMP_DESC); if ( !$rv ) { $rv = dbx_compare ($a, $b, "year", DBX_CMP_NUMBER); } return $rv; } $link = dbx_connect (DBX_LINTER, "", "", "SYSTEM", "MANAGER8") or die ("Ошибка соединения"); $result = dbx_query ($link, "SELECT year, make, model FROM auto ORDER BY make"); // данные в $result теперь упорядочены по производителям автомобилей (make) dbx_sort ($result, "user_auto"); // данные в $result теперь упорядочены по марке автомобиля (model) (по убыванию), затем по году выпуска (year) dbx_close ($link);