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)
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;
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 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!