Dieser Artikel stellt hauptsächlich die detaillierte Erklärung des Zählfunktionsbeispiels in PHP vor. Ich hoffe, dass er für alle hilfreich ist.
Bei der PHP-Programmierung ist es beim Durchlaufen eines Arrays oft notwendig, die Länge des Arrays als Bedingung für die Bestimmung des Endes der Schleife zu berechnen. In PHP kommen Array-Operationen sehr häufig vor, also auch count Eine häufig verwendete Funktion. Lassen Sie uns die spezifische Implementierung der Zählfunktion untersuchen.
Ich habe detailliertere Anmerkungen zum PHP-Quellcode auf Github. Wenn Sie Interesse haben, können Sie einen Blick darauf werfen und einen Stern vergeben. Anmerkungen zum PHP5.4-Quellcode. Sie können die hinzugefügten Anmerkungen über den Commit-Datensatz anzeigen.
count
int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )
Die Count-Funktion zählt die Anzahl aller Elemente in einem Array oder Objekt.
Wenn Sie für Objekte die SPL-Erweiterung installieren, können Sie die Zählfunktion aufrufen, indem Sie die Countable-Schnittstelle implementieren. Die Countable-Schnittstelle verfügt über eine einzige Methode, Countable::count(), die den Rückgabewert der Funktion count() zurückgibt.
Parameterbeschreibung
Modus
Wenn der Parametermodus auf COUNT_RECURSIVE (oder 1) eingestellt ist, wird count() verwendet Berechnen Sie dieses Array rekursiv. Besonders nützlich bei der Berechnung mehrdimensionaler Arrays.
Wenn der erste Parameter kein Array oder Objekt ist, das die Countable-Schnittstelle implementiert, gibt die Zählfunktion 1 zurück.
Hinweis: Die Zählfunktion kann Rekursionen erkennen, um Endlosschleifen zu vermeiden, gibt jedoch eine E_WARNING-Eingabeaufforderung zurück, wenn eine Endlosrekursion auftritt oder ein größerer Wert als erwartet erhalten wird.
Führen Sie das Beispiel aus
Normale Anwendung
$arr1 = array(1, 2, 3, 4, 5); $val1 = count($arr1); // 5
Mehrdimensionales Array
$arr2 = array('apple', 'banana', array('cat', 'camel'), 'dog'); $val2_1 = count($arr2); // 4 $val2_2 = count($arr2, 1); // 6
Zahlen und Zeichenfolgen
$str = "hello world"; $int_val = 1; $val3 = count($str); // 1 $val4 = count($int_val); // 1
Normale Objekte
class User { private $name; private $address; } $user = new User(); $val5 = count($user); // 1 $val6 = count((array) $user); // 2
Array-ähnliches Objekt
class User extends ArrayObject { private $name; public function __construct() { $this->name = 'hhq'; } public function getName() { return $this->name; } public function count() { return 2; } } $user2 = new User(); $val7 = count($user2); // 2
Zählbares Schnittstellenobjekt implementieren
class User implements Countable { public function count() { return 3; } } $user3 = new User(); $val8 = count($user3); // 3
Schritt ausführen
Switch-Anweisung eingeben, um Parameter zu erkennen Typ
Wenn es NULL ist, geben Sie 0 direkt zurück
Wenn es ein Array ist, rufen Sie die Funktion php_count_recursive auf, um automatisch die Anzahl der Array-Elemente auszuwählen
Wenn es ein Objekt ist Überprüfen Sie zunächst, ob es sich um ein Array-Objekt (Array-ähnliches Objekt) handelt. Wenn ja, zählen Sie die Anzahl der Array-Objekte
. Wenn das Objekt die Countable-Schnittstelle implementiert, rufen Sie andernfalls die Zählmethode von Countable auf
Schließlich geben andere Typen wie Integer-Arrays oder String beide 1 zurück.
Interpretation des Quellcodes
Wenn es sich um ein gewöhnliches Array handelt, ruft die Zählfunktion die Funktion php_count_recursive auf, um ihre Funktion zu implementieren lauten wie folgt:
Wenn die Anzahl der rekursiven Zugriffe auf den aktuellen Hash-Bucket größer als 1 ist, bedeutet dies eine wiederholte Rekursion und es wird ein E_WARNING-Fehler zurückgegeben
Andernfalls beträgt die Anzahl der Array-Elemente der aktuellen Array-Ebene werden berechnet
Wenn es eine rekursive Parameteroption gibt, dann wird weiterhin rekursiv darauf zugegriffen
Wenn der Parameter ein Objekttyp ist, ermittelt die Implementierung zunächst, ob Handler ist definiert. Der Handler ist die Struktur des Objekts im PHP-Kernel, das das Feld count_elements enthält, bei dem es sich eigentlich um eine Funktion handelt. Wenn sich ein Objekt wie ein Array verhält, was allgemein als arrayähnliches Objekt bezeichnet wird, wird die Funktion count_elements ausgeführt. Die spezifische Implementierung besteht darin, dass die Klasse das ArrayObject von PHP erbt und die Zählfunktion in der Klasse implementiert. Wenn die Klasse die Zählfunktion nicht implementiert, gibt count 0 zurück, andernfalls den Rückgabewert der Zählfunktion des Objekts wird zurückgegeben.
Wenn es sich um andere Datentypen handelt
1, Zeichenfolge
2, Zahl
3 , Die Situation, in der beide Urteile im Objektzweig falsch sind, d. h. das ArrayObject wird nicht geerbt und die Countable-Schnittstelle ist nicht implementiert.
Diese Typen geben alle 1 zurück.
Es ist zu beachten, dass Sie, wenn Sie die Anzahl der Attribute eines Objekts berechnen müssen, das Objekt zunächst in ein Array konvertieren und dann die Zählfunktion aufrufen können. Zum Beispiel:
$count_value = count((array) $user);
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird.
Verwandte Empfehlungen:
phpImplementierungsmethode der Webversion-Chat-Software
PHP-Anfrage-Socket-Schnittstellentestbeispiel Ausführliche Erklärung
PHP-Implementierung zum Lesen und Anzeigen großer Dateien
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Zählfunktionsbeispiele in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!