PHP Conference Nagoya 2025

PDO::sqliteCreateCollation

(PHP 5 >= 5.3.11, PHP 7, PHP 8)

PDO::sqliteCreateCollation Регистрация пользовательской функции сортировки для использования в SQL-запросах

Описание

public PDO::sqliteCreateCollation(string $name, callable $callback): bool
Внимание

Это ЭКСПЕРИМЕНТАЛЬНАЯ функция. Не исключается, что поведение, название и документацию функции изменят без уведомления в следующих версиях PHP. За включение функции в код отвечает программист.

Список параметров

name

Имя функции для использовании в запросах.

callback

Имя функции PHP, либо определённая пользователем функция для использования в качестве функции обратного вызова и определяющая поведение при сортировке. Она должна принимать две строки и возвращать -1 или 1, если первая строка должна располагаться до или после второй строки соответственно, либо 0, если порядок не важен.

Эта функция должна быть определена следующим образом:

collation(string $string1, string $string2): int

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #1 Пример использования PDO::sqliteCreateCollation()

<?php
$db
= new PDO('sqlite::memory:');
$db->exec("CREATE TABLE test (col1 string)");
$db->exec("INSERT INTO test VALUES ('a1')");
$db->exec("INSERT INTO test VALUES ('a10')");
$db->exec("INSERT INTO test VALUES ('a2')");

$db->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp');
foreach (
$db->query("SELECT col1 FROM test ORDER BY col1") as $row) {
echo
$row['col1'] . "\n";
}
echo
"\n";
foreach (
$db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $row) {
echo
$row['col1'] . "\n";
}
?>

Результат выполнения приведённого примера:

a1
a10
a2

a1
a2
a10

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top