Heim Backend-Entwicklung PHP-Tutorial Eine kurze Diskussion des PHP-Quellcodes 15: Über die Funktion array_walk

Eine kurze Diskussion des PHP-Quellcodes 15: Über die Funktion array_walk

Jun 28, 2018 pm 05:28 PM

In diesem Artikel wird hauptsächlich die kurze Diskussion zum PHP-Quellcode 15 vorgestellt: In Bezug auf die Funktion array_walk hat sie einen bestimmten Referenzwert. Jetzt können Freunde in Not darauf verweisen.

Eine kurze Beschreibung Diskussion über PHP-Quellcode 10 Fünf: Über die array_walk-Funktion

array_walk

(PHP 3 >= 3.0.3, PHP 4, PHP 5)
array_walk – Benutzerfunktion anwenden auf jedes Mitglied im Array
Beschreibung

bool array_walk (array &array, callback funcname [, Mixed userdata] )

Gibt TRUE zurück, wenn erfolgreich, und FALSE, wenn fehlgeschlagen.
Wenden Sie die benutzerdefinierte Funktion funcname auf jede Zelle im Array-Array an. Normalerweise akzeptiert funcname zwei Parameter. Als erster Wert wird der Wert des Array-Parameters und als zweiter der Schlüsselname verwendet. Wenn das optionale Argument userdata angegeben wird, wird es als drittes Argument an Callback funcname übergeben.
Wenn die Funktion funcname mehr Argumente als angegeben erfordert, wird jedes Mal, wenn array_walk() funcname aufruft, ein Fehler der Stufe E_WARNING generiert. Diese Warnungen können unterdrückt werden, indem dem array_walk()-Aufruf der PHP-Fehleroperator @ vorangestellt wird oder indem error_reporting() verwendet wird.
Hinweis: Wenn funcname direkt auf die Werte im Array zugreifen muss, geben Sie den ersten Parameter von funcname als Referenz an. Daher verändern alle Änderungen an diesen Zellen auch das ursprüngliche Array selbst.
Hinweis: Die Übergabe von Schlüsselnamen und Benutzerdaten an funcname ist neu in PHP 4.0.

array_walk() wird vom internen Array-Zeiger des Arrays nicht beeinflusst. array_walk() durchläuft das gesamte Array, unabhängig von der Position des Zeigers. (Dies liegt daran, dass das Programm den Zeiger der Hash-Tabelle zurücksetzt, in der sich das Array zu Beginn des Array-Durchlaufs befindet.)
Der Benutzer sollte das Array selbst in der Rückruffunktion nicht ändern. Zum Beispiel Einheiten hinzufügen/löschen, Einheiten deaktivieren usw. Wenn sich das Array ändert, auf das array_walk() reagiert, ist das Verhalten dieser Funktion undefiniert und unvorhersehbar.
Beschreibung der Programmimplementierung:
Der letzte Aufruf der Erweiterung ist die Funktion php_array_walk:

   static int php_array_walk(HashTable *target_hash, zval **userdata, int recursive TSRMLS_DC)
Nach dem Login kopieren

Bei rekursiv == 0 implementiert diese Funktion die Funktion array_walk

Bei rekursiv == 1, diese Funktion ist die Implementierung der Funktion array_walk_recursive

Im Quellcode durchläuft das Programm das gesamte Array und führt für jedes Array-Element relevante Funktionsaufrufe basierend auf der übergebenen Funktion durch
Die Der Funktionsaufruf lautet wie folgt:

fci.size = sizeof(fci);
            fci.function_table = EG(function_table);
            fci.function_name = *BG(array_walk_func_name);
            fci.symbol_table = NULL;
            fci.object_pp = NULL;
            fci.retval_ptr_ptr = &retval_ptr;
            fci.param_count = userdata ? 3 : 2;
            fci.params = args;
            fci.no_separation = 0;             /* Call the userland function */
            if (zend_call_function(&fci, &array_walk_fci_cache TSRMLS_CC) == SUCCESS) {
Nach dem Login kopieren

In diesem Funktionsaufruf wird eine Struktur verwendet:

 typedef struct _zend_fcall_info {
 size_t size;    //    整个结构体的长度,等于sizeof(此函数体的变量)
 HashTable *function_table;    //    executor_globals.function_table
 zval *function_name;    //    函数名 
 HashTable *symbol_table;
 zval **retval_ptr_ptr;        //    函数的返回值
 zend_uint param_count;    //    参数个数
 zval ***params;            //    所调用函数的参数
 zval **object_pp;        //    用于对象的方法调用时,存储对象
 zend_bool no_separation;    //    是否清空参数所在的栈} zend_fcall_info;
Nach dem Login kopieren

Das Obige ist eine persönliche Notiz. Bitte korrigiert mich!

EOF

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 14: Über die Funktion array_combine

Eine kurze Diskussion von PHP-Quellcode 13: Einführung in array_change_key_case, array_chunk

Eine kurze Diskussion des PHP-Quellcodes 12: Über return_value Rückgabewert

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion des PHP-Quellcodes 15: Über die Funktion array_walk. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

See all articles