


Eine kurze Diskussion des PHP-Quellcodes 15: Über die Funktion array_walk
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)
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) {
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;
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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-

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

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' =>

Alipay PHP ...

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

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

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.

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