Signatur
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
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);
?>
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);
?>
// 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.