Heim >Backend-Entwicklung >PHP-Tutorial >Eine kurze Diskussion des PHP-Quellcodes 8: Einführung in array_pop, array_shift

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

不言
不言Original
2018-06-28 16:55:012125Durchsuche

Dieser Artikel stellt hauptsächlich den PHP-Quellcode 8 vor: Einführung in array_pop und array_shift, der einen bestimmten Referenzwert hat. Jetzt kann ich ihn mit Freunden in Not teilen.

Es ist das chinesische Neujahr . , es ist Zeit für einen Urlaub, einige Dinge müssen erledigt werden und einige Leute machen sich bereit, nach Hause zu gehen.
Es ist das erste Mal in diesem Jahr, dass ich nicht nach Hause gegangen bin. . . . .

Es scheint, dass ich mir den entsprechenden Quellcode seit einer Woche nicht mehr angesehen habe. Sind Sie nicht mehr motiviert?
Es scheint, dass ich aus bestimmten Gründen meine Anforderungen an mich selbst nicht lockern kann, also habe ich zwei weitere Bücher gekauft, von denen ich letzten Monat nur eines gelesen habe, also muss ich hart arbeiten! . .

Sieht so aus, als hätte er irgendeinen Unsinn gesagt. . .

In standard/array.c finden wir die C-Implementierung der beiden Funktionen array_pop und array_shift

gemischtes array_pop (array &array)

array_pop() öffnet und gibt ein Array zurück Das letzte Element des Arrays und verringert die Länge des Arrays um eins. Wenn das Array leer ist (oder kein Array), wird NULL zurückgegeben

Hinweis: Nach Verwendung dieser Funktion wird der Array-Zeiger zurückgesetzt (reset())

mixed array_shift ( array &array )

array_shift() Verschiebt das erste Element des Arrays nach außen und gibt es als Ergebnis zurück, dekrementiert die Länge des Arrays um eins und verschiebt alle anderen Elemente um eine Position nach vorne. Alle numerischen Tastennamen werden so geändert, dass sie ab Null zählen, und Texttastennamen bleiben unverändert. Wenn das Array leer ist (oder kein Array ist), wird NULL zurückgegeben.

Hinweis: Nach Verwendung dieser Funktion wird der Array-Zeiger zurückgesetzt (reset())

Beide Funktionen werden in der Implementierung verwendet

   /* {{{ proto mixed array_pop(array stack)
   Pops an element off the end of the array */PHP_FUNCTION(array_pop){
 _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);}/* }}} */ /* {{{ proto mixed array_shift(array stack)
   Pops an element off the beginning of the array */PHP_FUNCTION(array_shift){
 _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);}

Das Programm ermittelt zunächst die Eingabe, und stellen Sie dann fest, ob das Array leer ist. Geben Sie es direkt zurück 🎜>direkt zu diesem Zeitpunkt Geben Sie das letzte Element der doppelt verknüpften Liste in der Hashtabelle zurück ht->pInternalPointer = ht->pListTail;

Wenn es array_shift ist:
==>zend_hash_internal_pointer_reset( Z_ARRVAL_PP(stack));
= =>zend_hash_internal_pointer_reset_ex(ht, NULL)

Zu diesem Zeitpunkt wird das erste Element der doppelt verknüpften Liste in der Hashtabelle direkt zurückgegeben ht->pInternalPointer = ht-> pListHead;


Erhalten Sie den Rückgabewert über

  zend_hash_get_current_data 
==> zend_hash_get_current_data_ex(ht, pData, NULL) 
 p = pos ? (*pos) : ht->pInternalPointer;*pData = p->pData;

Erhalten Sie den Wert in der Hashtabelle

Löschen Sie dann den Schlüsselwert in der Hashtabelle und rufen Sie zend_hash_internal_pointer_reset auf, um die Hashtabelle zurückzusetzen

Dieser Reset ist : ht->pInternalPointer = ht->pListHead;

Das heißt, die aktuelle Position wird auf das erste Element der verknüpften Liste gesetzt.


Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Eine kurze Diskussion über PHP-Quellcode 7: Über nl2br, ltrim, rtrim, trim-Funktionen

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

Eine kurze Diskussion des PHP-Quellcodes fünf: Über die Erstellung eines Array-Arrays

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