Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion zum PHP-Quellcode 20: Über die Funktionen array_flip und array_reverse

Eine kurze Diskussion zum PHP-Quellcode 20: Über die Funktionen array_flip und array_reverse

不言
不言Original
2018-06-28 17:44:341849Durchsuche

Dieser Artikel stellt hauptsächlich den PHP-Quellcode 20 vor: Über die Funktionen array_flip und array_reverse, die einen bestimmten Referenzwert haben. Jetzt können Freunde in Not darauf verweisen.

Ein kurzer Vortrag über PHP-Quellcode 20: Über array_flip, array_reverse-Funktion

array_flip
(PHP 4, PHP 5)

array_flip – Tauschen Sie die Schlüssel und Werte im Array aus
Anweisungen
array array_flip (array trans)

array_flip() gibt ein umgekehrtes Array zurück. Beispielsweise werden die Schlüsselnamen in trans zu Werten und die Werte in trans zu Schlüsselnamen.

Beachten Sie, dass der Wert in trans ein zulässiger Schlüsselname sein muss, beispielsweise eine Ganzzahl oder eine Zeichenfolge. Wenn der Wert vom falschen Typ ist, wird eine Warnung ausgegeben und das betreffende Schlüssel/Wert-Paar wird nicht umgekehrt.

Wenn derselbe Wert mehrmals vorkommt, wird der letzte Schlüsselname als Wert verwendet und alle anderen gehen verloren.

array_flip() gibt FALSE zurück, wenn es fehlschlägt.
Beschreibung des Quellcodes: Durchlaufen Sie die Hash-Tabelle, in der sich das Array befindet, nehmen Sie den Schlüssel heraus, erstellen Sie ein neues ZVAL und verwenden Sie dann den Wert des vorherigen Arrays als Schlüssel, um ihn in die Hash-Tabelle des zurückgegebenen Arrays zu schreiben .
Für den vorherigen Wert wird nur der vorherige Wert LONG unterstützt und STRING gibt eine Warnung aus, wenn es andere Typen gibt. Der Quellcode für die Typbeurteilung lautet wie folgt:

 if (Z_TYPE_PP(entry) == IS_LONG) {
 zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_PP(entry), &data, sizeof(data), NULL);
 } 
 else if (Z_TYPE_PP(entry) == IS_STRING) {
 zend_symtable_update(Z_ARRVAL_P(return_value), Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &data, sizeof(data), NULL);} else {zval_ptr_dtor(&data); /* will free also zval structure */php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can only flip STRING and INTEGER values!");}

array_reverse

(PHP 4, PHP 5)

array_reverse – Gibt ein Einheitsarray in umgekehrter Reihenfolge zurück
Beschreibung
array array_reverse (array array [, bool Preserve_keys])

array_reverse() akzeptiert array array als Eingabe und gibt ein neues Array mit Zellen in umgekehrter Reihenfolge zurück. Wenn „preserve_keys“ TRUE ist, bleibt der ursprüngliche Schlüsselname erhalten.
Beschreibung des Quellcodes: Da das Array in der Hash-Tabelle gespeichert ist und die Hash-Tabelle doppelt verknüpfte Listen unterstützt,
so beginnt das Programm beim letzten Element der doppelt verknüpften Liste, durchläuft vorwärts und im Prozess , alle Elemente Erstellen Sie eine Kopie (d. h. (*entry)->refcount++;)
und schreiben Sie diese in die Hash-Tabelle, in der sich das zurückgegebene Array befindet.

Für die doppelt verknüpfte Liste in der Hash-Tabelle können Sie die Definition der Hash-Tabelle anzeigen, die im vorherigen Artikel vorgestellt wurde: http://www.php.cn/php-weizijiaocheng- 405316.html

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 19: Über array_file, Range-Funktion

Eine kurze Diskussion von PHP-Quellcode 10 Acht: Über array_diff_key, array_diff_assoc, array_udiff_assoc Funktion

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion zum PHP-Quellcode 20: Über die Funktionen array_flip und array_reverse. 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