Start · Sprachen · PHP · Referenz · ocicolltrim

ocicolltrim

Funktion

Alias von <code>OCICollection::trim()</code> — entfernt eine angegebene Anzahl von Elementen vom Ende einer Oracle-Collection.

seit PHP 5.0.0 Kategorie: db

Signatur

ocicolltrim(OCICollection $collection, int $num): bool

Beschreibung

ocicolltrim() ist ein prozeduraler Alias der Methode OCICollection::trim() aus der OCI8-Erweiterung. Die Funktion entfernt $num Elemente vom Ende einer Oracle-Collection (VARRAY oder verschachtelter TABLE-Typ), die zuvor mit ocinewcollection() erstellt oder aus der Datenbank geladen wurde.

Collections in Oracle sind geordnete Mengen von Elementen gleichen Typs, die als Spaltentypen oder PL/SQL-Parameter eingesetzt werden können. Das Trimmen einer Collection ist nützlich, wenn man die Größe einer Collection reduzieren möchte, bevor sie zurück in die Datenbank geschrieben wird, oder wenn dynamisch Elemente entfernt werden sollen.

Die Funktion ist ein Alias und verhält sich identisch zur objektorientierten Variante OCICollection::trim($num). Da Aliase in zukünftigen PHP-Versionen entfernt werden können, wird empfohlen, die OOP-Methode direkt zu nutzen.

Wird $num größer als die aktuelle Anzahl der Elemente in der Collection angegeben, gibt die Funktion false zurück und löst einen Fehler aus.

Parameter

Name Typ Default Beschreibung
$collection Pflicht OCICollection Ein gültiges OCICollection-Objekt, das zuvor mit ocinewcollection() erzeugt oder aus einer Datenbankabfrage gewonnen wurde.
$num Pflicht int Anzahl der Elemente, die vom Ende der Collection entfernt werden sollen. Darf nicht größer sein als die aktuelle Anzahl der Collection-Elemente.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false wenn ein Fehler auftritt (z. B. wenn $num die Collection-Größe überschreitet oder das Collection-Objekt ungültig ist).

Beispiele

Elemente am Ende einer Oracle-Collection entfernen

<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error($e['message'], E_USER_ERROR);
}

// Neue VARRAY-Collection anlegen (Typ muss in der DB existieren)
$collection = ocinewcollection($conn, 'NUM_ARRAY', 'HR');

// Elemente hinzufügen
$collection->append(10);
$collection->append(20);
$collection->append(30);
$collection->append(40);

echo 'Größe vor trim: ' . $collection->size() . PHP_EOL; // 4

// Die letzten 2 Elemente entfernen
$result = ocicolltrim($collection, 2);

if ($result) {
    echo 'Größe nach trim: ' . $collection->size() . PHP_EOL; // 2
} else {
    echo 'Fehler beim Trimmen der Collection.' . PHP_EOL;
}

$collection->free();
oci_close($conn);
?>
Größe vor trim: 4 Größe nach trim: 2

Empfohlene OOP-Variante (OCICollection::trim)

<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error($e['message'], E_USER_ERROR);
}

$collection = ocinewcollection($conn, 'NUM_ARRAY', 'HR');
$collection->append(100);
$collection->append(200);
$collection->append(300);

// OOP-Methode direkt verwenden (empfohlen statt Alias)
$collection->trim(1);

echo 'Größe nach OOP-trim: ' . $collection->size() . PHP_EOL; // 2

$collection->free();
oci_close($conn);
?>
Größe nach OOP-trim: 2

// Wichtig · Fallstricke

Deprecation-Hinweis: ocicolltrim() ist ein veralteter Alias. Seit PHP 8.0 werden viele OCI8-Aliase als veraltet markiert. Es wird empfohlen, stattdessen die Methode OCICollection::trim() direkt zu verwenden, um Kompatibilitätsprobleme mit zukünftigen PHP-Versionen zu vermeiden.

Fehlerfall: Wenn $num größer ist als die Anzahl der vorhandenen Elemente, gibt die Funktion false zurück. Es sollte daher immer $collection->size() geprüft werden, bevor ocicolltrim() aufgerufen wird.

Das Collection-Objekt muss mit OCICollection::free() freigegeben werden, wenn es nicht mehr benötigt wird, um Speicherlecks zu vermeiden.