Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erläuterung der Zählfunktionsbeispiele in PHP

Ausführliche Erläuterung der Zählfunktionsbeispiele in PHP

墨辰丷
墨辰丷Original
2018-06-02 09:30:412237Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn