PHP.mk документација

Pdo\Sqlite::createAggregate

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

pdo-sqlite.createaggregate.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека pdo-sqlite.createaggregate.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Pdo\Sqlite::createAggregate

Референца за `pdo-sqlite.createaggregate.php` со подобрена типографија и навигација.

pdo-sqlite.createaggregate.php

Pdo\Sqlite::createAggregate

Класата Dom\DtdNamedNodeMap

Pdo\Sqlite::createAggregate Registers an aggregating user-defined function for use in SQL statements

= NULL

public Pdo\Sqlite::createAggregate(
         string $name,
         callable $step,
         callable $finalize,
         int $numArgs = -1
): bool

Овој метод е сличен на (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0) Регистрира агрегирачка кориснички дефинирана функција за употреба во SQL изјави

освен што регистрира функции што можат да се користат за пресметување на резултат агрегиран низ сите редови на една нарачка. (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0) Клучната разлика помеѓу овој метод и

Совети

Со користење на овој метод е можно да се презапишат нативни SQL функции.

Параметри

name
Името на функцијата што се користи во SQL изрази.
step
е тоа што се потребни две функции за управување со агрегатот.

Оваа функција треба да биде дефинирана како:

step(
         mixed $context,
         int $rownumber,
         mixed $value,
         mixed ...$values
): mixed
context
null Повикана функција за секој ред од резултатот. Повиканата функција треба да го акумулира резултатот и да го зачува во контекстот на агрегацијата.
rownumber
за првиот ред; на последователните редови ќе ја има вредноста што претходно била вратена од функцијата за чекор; треба да ја користите оваа за одржување на состојбата на агрегатот.
value
Тековниот број на редот.
values
Првиот аргумент предаден на агрегатот.
Понатамошни аргументи предадени на агрегатот. context Вратената вредност од оваа функција ќе се користи како
finalize
аргумент во следниот повик на функциите за чекор или финализирање. скаларен тип).

Оваа функција треба да биде дефинирана како:

fini(mixed $context, int $rowcount): mixed
context

Повикана функција за агрегирање на „чекорирани“ податоци од секој ред. Откако ќе се обработат сите редови, оваа функција ќе биде повикана и треба да ги земе податоците од контекстот на агрегацијата и да го врати резултатот. Оваа повикана функција треба да врати тип што го разбира SQLite (т.е.

rowcount

Ги чува вратените вредности од последниот повик на функцијата за чекор.

Го чува бројот на редови над кои е извршена агрегацијата.
numArgs
Вратената вредност од оваа функција ќе се користи како вратена вредност за агрегатот.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

Примери

Пример #1 PDO::sqliteCreateAggregate() example

Наговестување до SQLite парсерот ако повиканата функција прифаќа предодреден број на аргументи. max_length Во овој пример ќе создадеме прилагодена агрегирачка функција наречена

што може да се користи во SQL прашања. max_lengthВо овој пример, создаваме агрегирачка функција, наречена max_len_step функцијата се повикува и ѝ се предава $context параметар. Параметарот за контекст е како секоја друга PHP променлива и може да се постави да држи array или дури и object. Во овој пример, го користиме за да ја задржиме максималната должина што сме ја виделе досега; ако $string има должина поголема од моменталниот максимум, го ажурираме контекстот за да ја задржиме оваа нова максимална должина.

Откако ќе се обработат сите редови, SQLite ја повикува max_len_finalize функцијата за да го одреди збирниот резултат. Можно е да се изврши некаков вид пресметка врз основа на податоците во $context. Во овој основен пример резултатот беше пресметан како што напредуваше прашањето, така што вредноста на контекстот може директно да се врати.

<?php
$data
= [
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine',
'ten',
];
$db = new Pdo\Sqlite('sqlite::memory:');
$db->exec("CREATE TABLE strings(a)");
$insert = $db->prepare('INSERT INTO strings VALUES (?)');
foreach (
$data as $str) {
$insert->execute(array($str));
}
$insert = null;

function
max_len_step($context, $row_number, $string)
{
if (
strlen($string) > $context) {
$context = strlen($string);
}
return
$context;
}

function
max_len_finalize($context, $row_count)
{
return
$context === null ? 0 : $context;
}

$db->createAggregate('max_len', 'max_len_step', 'max_len_finalize');

var_dump($db->query('SELECT max_len(a) from strings')->fetchAll());

?>
Совети

НЕ се препорачува да чувате копија од вредностите во контекстот, а потоа да ги обработувате на крајот, бидејќи би предизвикале SQLite да користи многу меморија за обработка на прашањето - само замислете колку меморија би ви била потребна ако милион редови беа складирани во меморијата, секој содржејќи низа долга 32 бајти.

Види Исто така

  • (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0) - Регистрира кориснички дефинирана функција за употреба во SQL изрази
  • (PHP 5 >= 5.3.11, PHP 7, PHP 8) - Регистрира кориснички дефинирана функција за употреба како функција за споредување во SQL изрази
  • sqlite_create_function()
  • sqlite_create_aggregate()

Белешки од корисници

Нема белешки од корисници за оваа страница.
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.