Сравнить значения столбцов
Назначение
Функция 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);