W3docs

sizeof()

Erfahren Sie, wie die PHP-Funktion sizeof() Array-Elemente zählt, wie sie sich zu count() verhält und wie COUNT_RECURSIVE mit verschachtelten Arrays umgeht.

Einführung

PHP verfügt über viele eingebaute Funktionen für die Arbeit mit Arrays. sizeof() ist eine der einfachsten: Sie gibt die Anzahl der Elemente zurück, die ein Array enthält. Diese Seite erklärt, wie sizeof() funktioniert, wie es sich bei verschachtelten (mehrdimensionalen) Arrays verhält und warum es im Grunde nur ein anderer Name für count() ist.

Was ist sizeof()?

sizeof() gibt die Anzahl der Elemente in einem Array zurück. Es ist ein Alias für count() — die beiden Funktionen sind intern identisch, sodass sie dasselbe Verhalten, dieselben Rückgabewerte und dieselbe Leistung aufweisen. Alles, was Sie mit count() tun können, können Sie auch mit sizeof() tun, und umgekehrt.

Da es ein Alias und keine eigenständige Implementierung ist, gibt es keine Situation, in der eine Funktion schneller oder leistungsfähiger als die andere ist.

Syntax

sizeof(array|Countable $value, int $mode = COUNT_NORMAL): int
ParameterErforderlichBeschreibung
$valueJaDas Array (oder Countable-Objekt), dessen Elemente gezählt werden sollen.
$modeNeinZählmodus. COUNT_NORMAL (Standard) zählt nur Elemente der obersten Ebene; COUNT_RECURSIVE zählt auch Elemente in verschachtelten Arrays.

Die Funktion gibt ein int zurück — die Anzahl der Elemente.

Einfaches Beispiel

Zählen der Elemente eines flachen Arrays:

php— editable, runs on the server

Ausgabe:

3

Das Array enthält drei Elemente, daher gibt sizeof() den Wert 3 zurück.

Verschachtelte Arrays mit COUNT_RECURSIVE zählen

Standardmäßig zählt sizeof() nur die Elemente der obersten Ebene. Um auch die Elemente in Unterarrays zu zählen, übergeben Sie COUNT_RECURSIVE als zweites Argument:

<?php

$data = [
    'fruits'     => ['apple', 'banana'],
    'vegetables' => ['carrot'],
];

echo sizeof($data);                  // top-level keys only
echo "\n";
echo sizeof($data, COUNT_RECURSIVE); // top-level + nested items

Ausgabe:

2
5

COUNT_NORMAL sieht zwei Schlüssel auf der obersten Ebene (fruits und vegetables). COUNT_RECURSIVE zählt diese zwei Schlüssel plus die drei Werte darin (apple, banana, carrot), was 5 ergibt.

sizeof() vs count()

Verwenden Sie den Namen, der für Sie lesbarer ist — das Ergebnis ist immer dasselbe:

<?php

$nums = [10, 20, 30, 40];

var_dump(sizeof($nums) === count($nums));

Ausgabe:

bool(true)

In der Praxis empfiehlt die offizielle PHP-Dokumentation die Verwendung von count(), da der Name sizeof leicht mit dem sizeof-Operator aus C verwechselt werden kann (der die Speichergröße misst, nicht die Anzahl der Elemente). Die Verwendung von count() hält Ihren Code konsistent mit den meisten modernen PHP-Codebasen.

Häufige Fallstricke

  • Zeichenanzahl in einem String wird nicht gezählt. sizeof('hello') löst eine Warnung aus und gibt 1 zurück, nicht 5. Verwenden Sie strlen() für die Stringlänge.
  • Es werden nicht die Größen mehrerer Arrays summiert. sizeof() nimmt ein Array-Argument entgegen, nicht mehrere.
  • Ein leeres Array gibt 0 zurück. Das macht es sicher, die Funktion direkt in einer Schleifenbedingung zu verwenden, wie z. B. for ($i = 0; $i < sizeof($arr); $i++).

Fazit

sizeof() gibt die Anzahl der Elemente in einem Array zurück und ist ein direkter Alias von count(). Übergeben Sie COUNT_RECURSIVE, wenn Sie auch verschachtelte Elemente zählen möchten. Für neuen Code sollten Sie zur Klarheit count() bevorzugen — beide Funktionen verhalten sich jedoch identisch.

Übung

Übung
Was macht die Funktion 'sizeof' in PHP?
Was macht die Funktion 'sizeof' in PHP?
Was this page helpful?