Signatur
Beschreibung
ocicollsize() ist ein prozeduraler Alias der Methode OCICollection::size() und gibt die Anzahl der Elemente zurück, die in der angegebenen Oracle-Collection gespeichert sind. Collections entsprechen Oracle-Datenbanktypen wie VARRAY oder TABLE OF.
Die Funktion eignet sich, um vor dem Iterieren oder Zugreifen auf einzelne Elemente einer Collection deren Größe zu prüfen, ähnlich wie count() bei PHP-Arrays. Sie gehört zur OCI8-Erweiterung und ermöglicht die prozedurale Schreibweise für Entwickler, die keine Objekt-Syntax bevorzugen.
Hinweis: Diese Funktion ist ein veralteter Alias. Es wird empfohlen, stattdessen die objektorientierte Methode OCICollection::size() zu verwenden, da prozedurale OCI-Aliase in zukünftigen PHP-Versionen entfernt werden könnten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $collection Pflicht | OCICollection | Ein OCICollection-Objekt, das zuvor mit oci_new_collection() erstellt oder aus einer Oracle-Abfrage abgerufen wurde. |
Rückgabewert
int zurück. Im Fehlerfall wird false zurückgegeben.Beispiele
Größe einer Oracle-Collection ermitteln
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$err = oci_error();
trigger_error('Verbindung fehlgeschlagen: ' . $err['message'], E_USER_ERROR);
}
// Collection vom Typ ODCIVARCHAR2LIST (integrierter Oracle-Typ) anlegen
$collection = oci_new_collection($conn, 'ODCIVARCHAR2LIST', 'SYS');
$collection->append('Eintrag 1');
$collection->append('Eintrag 2');
$collection->append('Eintrag 3');
$groesse = ocicollsize($collection);
echo 'Anzahl der Elemente: ' . $groesse . PHP_EOL;
$collection->free();
oci_close($conn);
Elemente iterieren mit Größenprüfung
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
$collection = oci_new_collection($conn, 'ODCIVARCHAR2LIST', 'SYS');
$collection->append('Alpha');
$collection->append('Beta');
$collection->append('Gamma');
$groesse = ocicollsize($collection);
if ($groesse !== false && $groesse > 0) {
for ($i = 0; $i < $groesse; $i++) {
// OCI-Collections sind 1-basiert
echo 'Element ' . ($i + 1) . ': ' . $collection->getElem($i + 1) . PHP_EOL;
}
} else {
echo 'Collection ist leer oder ein Fehler ist aufgetreten.';
}
$collection->free();
oci_close($conn);
// Wichtig · Fallstricke
Veraltet: ocicollsize() ist ein prozeduraler Alias und sollte zugunsten der objektorientierten Methode OCICollection::size() vermieden werden. Die prozedurale OCI8-API wurde in PHP 8.0 teilweise bereinigt; prüfen Sie die Verfügbarkeit in Ihrer PHP-Version.
Beachten Sie, dass Oracle-Collections 1-basiert indiziert sind, d. h. das erste Element hat den Index 1, nicht 0. Dies unterscheidet sich vom üblichen PHP-Array-Verhalten und sollte beim Zugriff via getElem() berücksichtigt werden.