Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion des neunten PHP-Quellcodes: Einführung in array_unshift, array_push

Eine kurze Diskussion des neunten PHP-Quellcodes: Einführung in array_unshift, array_push

不言
不言Original
2018-06-28 16:58:532278Durchsuche

Dieser Artikel stellt hauptsächlich den PHP-Quellcode 9 vor: Einführung in array_unshift und array_push. Jetzt kann ich ihn mit Ihnen teilen.

Heute ist der Chinese Neues Jahr, ich wünsche allen meinen Freunden ein frohes neues Jahr und alles Gute!

Eine kurze Diskussion des PHP-Quellcodes neun: Einführung in array_unshift, array_push

int array_unshift (array &array, Mixed var [, Mixed ...])

array_unshift( ) wird Die übergebene Zelle am Anfang des Array-Arrays eingefügt. Beachten Sie, dass Zellen als Ganzes eingefügt werden, sodass eingehende Zellen in derselben Reihenfolge bleiben. Alle numerischen Tastennamen werden so geändert, dass sie wieder bei Null beginnen, und alle Texttastennamen bleiben unverändert.

Gibt die neue Anzahl von Zellen im Array-Array zurück.

In Zeile 2080 von standard/array.c sehen Sie die C-Implementierung dieser Funktion PHP_FUNCTION(array_unshift)

Das Programm ermittelt zunächst, ob die Anzahl der Eingabeparameter korrekt ist Es ist kleiner als 2. Melden Sie einen Fehler
und ermitteln Sie dann, ob der erste Parameter ein Array ist. Wenn nicht, melden Sie einen Fehler und beenden Sie
. Anschließend ruft das Programm new_hash = php_splice(Z_ARRVAL_P(stack), 0 auf , 0, &args[1], argc-1, NULL) ;

HashTable* php_splice(HashTable *in_hash, int offset, int length, zval ***list, int list_count, HashTable **removed)
Diese Funktion befindet sich in Zeile 1861 von array.c
Sie kopiert zunächst einen Teil von in_hash (ursprüngliche Hashtabelle) in die neue Hashtabelle. Dieser Teil wird basierend auf dem durch array_unshif angegebenen Offset und der Länge berechnet sind beide 0, sodass keine Elemente in die neue Hashtabelle kopiert werden
dann durchläuft die Liste, erstellt einen Zval für jedes Element und fügt es mit zend_hash_next_index_insert in die neue Hashtabelle ein und kopiert dann die verbleibenden Elemente hinein in_hash zur neuen Hashtabelle. Da sowohl Offset als auch Länge 0 sind, ist alles Hashtabelle.
Zuletzt wird die neu generierte Hashtabelle zurückgegeben.
Der gesamte Vorgang entspricht dem Schreiben der Daten in der Liste zuerst in die Hashtabelle , und dann die alten Daten in die Hashtabelle schreiben, wodurch die Vorderseite des Arrays realisiert wird. Elemente einfügen

und dann die Hashtabelle löschen, in der sich das alte Array befindet, die neue HashTable aktualisieren und den internen Zeiger des zurücksetzen Hashtabelle.

Gibt die Anzahl der Elemente in der Hashtabelle zurück (d. h. die Länge des neu generierten Arrays)

int array_push (array &array, Mixed var [, Mixed ...])

array_push() behandelt Array als Stapel und schiebt die übergebenen Variablen an das Ende des Arrays. Die Länge des Arrays erhöht sich entsprechend der Anzahl der auf den Stapel verschobenen Variablen.

Gleicher Effekt wie:

   <?php$array[] = $var;?>

Und für jede Variante wiederholen.

Gibt die neue Gesamtzahl der Zellen im Array zurück.

Diese Implementierung ist relativ einfach:

Durchlaufen Sie direkt die angegebenen Parameter, erstellen Sie ein zval für jedes Element, fügen Sie eines zu seiner Referenz hinzu und fügen Sie es am Ende der Hashtabelle hinzu, wo sich das Array befindet.
Gibt die Anzahl der Elemente in der Hashtabelle zurück (d. h. die Länge des neu generierten Arrays)

Das Obige ist der gesamte Inhalt dieses Artikels, der für das Lernen hilfreich sein wird Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Eine kurze Diskussion des PHP-Quellcodes 8: Einführung in array_pop, array_shift

Eine kurze Diskussion des PHP-Quellcodes Code 7: Über die Funktionen nl2br, ltrim, rtrim und trim

Eine kurze Diskussion des PHP-Quellcodes 6: Über die Funktion stream_get_wrappers

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion des neunten PHP-Quellcodes: Einführung in array_unshift, array_push. 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