Signatur
Beschreibung
resourcebundle_count() ist die prozedurale Variante der Methode ResourceBundle::count() und gibt zurück, wie viele direkte Einträge ein gegebenes ICU-Ressourcenbündel enthält. Dies ist nützlich, um über alle Einträge iterieren zu können oder um die Größe eines Bundles vorab zu prüfen.
ICU-Ressourcenbündel (ResourceBundle) speichern lokalisierte Daten wie Zeichenketten, Integer-Werte, binäre Daten oder verschachtelte Bundles. Die Funktion zählt dabei nur die Einträge auf der obersten Ebene des übergebenen Bundles, nicht etwaige verschachtelte Elemente.
Die Funktion eignet sich besonders dann, wenn man numerisch indizierte Bundles sequenziell verarbeiten möchte und die obere Grenze einer Schleife kennen muss. Für benannte (assoziative) Bundles ist das Iterieren über einen foreach-Loop oft die flexiblere Variante.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $bundle Pflicht | ResourceBundle | Das ResourceBundle-Objekt, dessen Elementanzahl ermittelt werden soll. |
Rückgabewert
int zurück. Bei einem leeren Bundle wird 0 zurückgegeben.Beispiele
Anzahl der Einträge in einem ResourceBundle ermitteln
<?php
// ResourceBundle aus dem ICU-Datenverzeichnis laden
$bundle = ResourceBundle::create('de', 'ICUDATA-region');
if ($bundle !== null) {
$anzahl = resourcebundle_count($bundle);
echo "Anzahl der Einträge im Bundle: " . $anzahl;
} else {
echo "Bundle konnte nicht geladen werden.";
}
Iteration über ein numerisch indiziertes Bundle
<?php
// Eigene Bundle-Datei (resources/de.res) wird geladen
$bundle = new ResourceBundle('de', __DIR__ . '/resources');
$count = resourcebundle_count($bundle);
echo "Das Bundle enthält {$count} Einträge.\n";
// Sequentielles Durchlaufen über den Index
for ($i = 0; $i < $count; $i++) {
$wert = $bundle->get($i);
echo "Eintrag {$i}: " . $wert . "\n";
}
// Wichtig · Fallstricke
Hinweis: resourcebundle_count() ist die prozedurale Entsprechung zu ResourceBundle::count(). Beide Varianten liefern identische Ergebnisse. In modernem objektorientiertem Code wird die Methoden-Variante bevorzugt.
Bei verschachtelten Bundles zählt die Funktion nur die direkten Kindelemente des übergebenen Bundles. Um verschachtelte Elemente zu zählen, muss die Funktion rekursiv auf den jeweiligen Sub-Bundle aufgerufen werden.
Wenn das Bundle nicht korrekt geladen werden konnte und null zurückgibt, führt die Übergabe an resourcebundle_count() zu einem Fehler. Daher sollte stets geprüft werden, ob das Bundle erfolgreich erstellt wurde.