Rückruffunktionen und Arrays
Der in diesem Artikel mit Ihnen geteilte Inhalt befasst sich mit PHP-Rückruffunktionen und -Arrays, die einen bestimmten Referenzwert haben. Freunde in Not können sich auf
array_filter(), array_map() und den Verwendungsvergleich beziehen von array_reduce(), array_walk()
array_filter – Rückruffunktion verwenden, um die Zellen im Array zu filtern
Beschreibung: array array_filter ( array $array
[, callable $callback
[, int $flag
= 0 ]] )
übergibt jeden Wert im Array array
der Reihe nach an die Funktion callback
. Wenn die Funktion callback
„true“ zurückgibt, wird der aktuelle Wert des Arrays array
in das zurückgegebene Ergebnisarray aufgenommen, andernfalls wird kein Wert an das Ergebnisarray zurückgegeben . Die Schlüsselnamen des Arrays bleiben unverändert.
Parameterbeschreibung:
Array:Array zur Schleife
Rückruf:Zu verwendende Rückruffunktion
Wenn die Funktion callback
nicht bereitgestellt wird, werden alle äquivalenten Werte von array werden gelöscht >FALSE
Einträge.
Flagge:Entscheidungcallback
Empfangenes Parameterformular
ARRAY_FILTER_USE_KEY
- Akzeptiert den Schlüsselnamen als einzigen Parametercallback
ARRAY_FILTER_USE_BOTH
-callback
Akzeptieren Sie sowohl den Schlüsselnamen als auch den Schlüsselwert
Rückgabewert: Gibt das gefilterte Array zurück.
Beispiel 1:
function odd($var){ return($var & 1);}function even($var){ return(!($var & 1)); } $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5); $array2 = array(6, 7, 8, 9, 10, 11, 12);echo "Odd :\n";print_r(array_filter($array1, "odd")); echo "<br />Even:\n"; print_r(array_filter($array2, "even")); 结果:Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
Analyse: & ist die UND-Operation von PHP. Wenn der Wert im Array übergeben wird, wird die UND-Operation gemäß der Binärform ausgeführt und ... 0000 0001 (die Anzahl der Nullen vorne hängt vom Betriebssystem ab. Wenn Wenn das Ergebnis wahr ist, wird der übergebene Wert an das Ergebnisarray zurückgegeben.
Beispiel 2: Wenn keine Rückruffunktion vorhanden ist und der Wert im Array wahr ist, wird der Wert im Array an das Ergebnisarray zurückgegeben
$entry = array( 0 => 'foo', 1 => false, 2 => -1, 3 => null, 4 => ''); print_r(array_filter($entry)); 结果:Array ( [0] => foo [2] => -1 )
Beispiel 3: Wenn nur Schlüsselwerte vorhanden sind, kann die Callback-Funktion einen Schlüsselwert empfangen. Wenn beide Schlüssel-Wert-Paare enthalten sind, erhält der erste Parameter den Wert und der zweite Parameter den Schlüsselwert
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]; var_dump(array_filter($arr, function($k) { return $k == 'b';}, ARRAY_FILTER_USE_KEY)); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4;}, ARRAY_FILTER_USE_BOTH)); 结果: D:\studySoftware\wamp64\www\test.php: 5:array (size=1) 'b' => int 2D: \studySoftware\wamp64\www\test.php: 8:array (size=2) 'b' => int 2 'd' => int 4
array_map — 为数组的每个元素应用回调函数
说明:array array_map ( callable $callback
, array $array1
[, array $...
] )
array_map(): Gibt ein Array zurück, das auf jedes Element von array1
callback
Array nach Funktion. Die Anzahl der Funktionsparameter callback
und die Anzahl der an array_map() übergebenen Arrays müssen gleich sein.
Rückruf: Rückruffunktion, angewendet auf jedes Element in jedem Array.
array1: Array, durchlaufen und die Funktion callback
ausführen.
...:数组列表,每个都遍历运行 callback
函数。
返回值:返回数组,包含 callback
函数处理之后 array1
的所有元素。
例1:
function cube($n){ return($n * $n * $n); }$a = array(1, 2, 3, 4, 5); $b = array_map("cube", $a); print_r($b); 结果: Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
例2:如果几个数组的元素数量不一致:空元素(null)会扩展短那个数组,直到长度和最长的数组一样。
function cube($n,$x){ echo "n的值:{$n},x的值:{$x}<br />"; return ($n + $x);}$a = array(1,2,3,4,5); $b = array(10,20); $c = array_map("cube",$a,$b); print_r($c); /* 结果: n的值: 1,x的值:10n的值: 2,x的值:20n的值: 3,x的值:n的值: 4,x的值:n的值: 5,x的值:Array ( [0] => 11 [1] => 22 [2] => 3 [3] => 4 [4] => 5 ) */
例3:此函数有个有趣的用法:传入 NULL
作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)
$a = array(1, 2, 3); $b = array("one", "two", "three"); $c = array("uno", "dos", "tres"); $d = array_map(null, $a, $b, $c); echo "<pre class="brush:php;toolbar:false">"; print_r($d); echo "";
结果如下:
例4:如果仅传入一个数组,键(key)会保留;传入多个数组,键(key)是整型数字的序列。
$arr = array("stringkey" => "value"); function cb1($a) { return array ($a); }function cb2($a, $b) { return array ($a, $b); }var_dump(array_map("cb1", $arr)); var_dump(array_map("cb2", $arr, $arr)); var_dump(array_map(null, $arr)); var_dump(array_map(null, $arr, $arr));
结果如下:
array_reduce – Verwenden Sie die Callback-Funktion, um das Array iterativ auf einen einzelnen Wert zu reduzieren
Beschreibung: gemischt array_reduce ( array $array
, aufrufbar $callback
[, gemischt $initial
= NULL
] )
array_reduce() wendet die Rückruffunktion callback
iterativ auf jedes Element im Array array
an in einer Zelle, wodurch das Array auf einen einzelnen Wert reduziert wird.
Parameter:
Array: Eingabearray.
Rückruf: gemischt Rückruf ( gemischt $carry
, gemischt $item
)
carry: trägt den Wert in der letzten Iteration; wenn diese Iteration das erste Mal ist, dann ist dieser Wert initial
.
item: trägt den Wert dieser Iteration.
initial: Wenn der optionale Parameter initial
angegeben ist, Dieser Parameter wird verwendet, bevor die Verarbeitung beginnt oder wenn die Verarbeitung endet und das Array leer ist, das letzte Ergebnis (d. h., wenn der Parameter array leer ist, initial als Rückgabewert von array_reduce()).
官网例子:
function sum($carry, $item){ $carry += $item; return $carry; } function product($carry, $item){ $carry *= $item; return $carry; } $a = array(1, 2, 3, 4, 5); $x = array(); var_dump(array_reduce($a, "sum")); // int(15)var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
这里讨论array为空的情况:
function sum($carry, $item){ echo "如果这里执行了,就打印..."; return $carry;}$x = array(); print_r(array_reduce($x, "sum",array("a","b"))); //结果: Array ( [0] => a [1] => b )
可以看出,当数组为空的时候,回调函数根本就没有执行,而是把initial作为array_reduce返回值
array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
说明:bool array_walk ( Array &$array
, aufrufbar $callback
[, gemischt $userdata
= NULL
] )
Wenden Sie die benutzerdefinierte Funktion funcname
auf jede Zelle im Array array
an.
array_walk() wird vom array
internen Array-Zeiger nicht beeinflusst. array_walk() durchläuft das gesamte Array unabhängig von der Position des Zeigers.
Parameterbeschreibung:
Array: Eingabearray.
Rückruf: Normalerweise akzeptiert callback
zwei Parameter. array
Der -Wert des Parameters wird als erster verwendet und der Schlüsselname wird als zweiter verwendet.
Hinweis:
Wenn callback
direkt auf die Werte im Array einwirken muss, geben Sie den ersten Parameter für callback
als Referenz an. Alle Änderungen an diesen Zellen verändern auch das ursprüngliche Array selbst.
Hinweis:
Die Anzahl der Parameter übersteigt die erwartete Anzahl (z. B. strtolower()), es wird eine Warnung ausgegeben, sodass sie nicht für die Verwendung als . funcname
Nur der Wert von array
kann geändert werden, und der Benutzer sollte die Struktur des Arrays selbst im Rückruf nicht ändern Funktion. Zum Beispiel Einheiten hinzufügen/löschen, Einheiten deaktivieren usw. Wenn sich das Array, auf dem sich array_walk() befindet, ändert, ist das Verhalten dieser Funktion undefiniert und unvorhersehbar.
Benutzerdaten: Wenn der optionale Parameter userdata
angegeben wird, wird er als dritter Parameter funcname
an den Callback übergeben .
返回值:成功时返回 TRUE
, 或者在失败时返回 FALSE
。
例子:
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana"); function test_alter(&$item1, $key, $prefix){ echo "$item1=$key=$prefix<br/>"; $item1 = "$prefix: $item1"; }function test_print($item2, $key){ echo "$key. $item2<br />\n";}echo "Before ...:<br />"; array_walk($fruits, 'test_print');array_walk($fruits, 'test_alter', 'fruit');echo "... and after:<br />"; array_walk($fruits, 'test_print'); /* Before ...: d. lemona. orange b. bananalemon=d=fruitorange=a=fruitbanana=b=fruit... and after: d. fruit: lemona. fruit: orangeb. fruit: banana */
Das obige ist der detaillierte Inhalt vonRückruffunktionen und Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

1. Die SUMME-Funktion wird verwendet, um die Zahlen in einer Spalte oder einer Gruppe von Zellen zu summieren, zum Beispiel: =SUMME(A1:J10). 2. Die Funktion AVERAGE wird verwendet, um den Durchschnitt der Zahlen in einer Spalte oder einer Gruppe von Zellen zu berechnen, zum Beispiel: =AVERAGE(A1:A10). 3. COUNT-Funktion, die verwendet wird, um die Anzahl der Zahlen oder Texte in einer Spalte oder einer Gruppe von Zellen zu zählen, zum Beispiel: =COUNT(A1:A10) 4. IF-Funktion, die verwendet wird, um logische Urteile auf der Grundlage spezifizierter Bedingungen zu treffen und die zurückzugeben entsprechendes Ergebnis.

Beim Übergeben einer Karte an eine Funktion in Go wird standardmäßig eine Kopie erstellt und Änderungen an der Kopie haben keinen Einfluss auf die Originalkarte. Wenn Sie die Originalkarte ändern müssen, können Sie sie über einen Zeiger übergeben. Leere Karten müssen mit Vorsicht behandelt werden, da es sich technisch gesehen um Nullzeiger handelt und die Übergabe einer leeren Karte an eine Funktion, die eine nicht leere Karte erwartet, einen Fehler verursacht.

Mit der Funktion array_group() von PHP kann ein Array nach einem angegebenen Schlüssel gruppiert werden, um doppelte Elemente zu finden. Diese Funktion durchläuft die folgenden Schritte: Verwenden Sie key_callback, um den Gruppierungsschlüssel anzugeben. Verwenden Sie optional value_callback, um Gruppierungswerte zu bestimmen. Zählen Sie gruppierte Elemente und identifizieren Sie Duplikate. Daher ist die Funktion array_group() sehr nützlich, um doppelte Elemente zu finden und zu verarbeiten.

Ja, in vielen Programmiersprachen können Arrays als Funktionsparameter verwendet werden und die Funktion führt Operationen an den darin gespeicherten Daten aus. Beispielsweise kann die printArray-Funktion in C++ die Elemente in einem Array drucken, während die printArray-Funktion in Python ein Array durchlaufen und seine Elemente drucken kann. Durch diese Funktionen am Array vorgenommene Änderungen werden auch im ursprünglichen Array der aufrufenden Funktion widergespiegelt.

Drei gängige Algorithmen zum Austausch von Array-Schlüsselwerten in PHP haben ihre eigenen Vor- und Nachteile: array_flip(): einfach und effizient, aber die Werte müssen eindeutig sein und können keine mehrdimensionalen Arrays verarbeiten. Manuelles Durchlaufen: Kann mehrdimensionale Arrays verarbeiten und Ausnahmen steuern, der Code ist jedoch länger und weniger effizient. ksort()+array_keys(): kann jede Art von Array verarbeiten und die Sortierreihenfolge steuern, ist jedoch weniger effizient. Praktische Fälle zeigen, dass array_flip() am effizientesten ist, aber beim Umgang mit mehrdimensionalen Arrays ist die manuelle Durchquerung besser geeignet.

Das pprof-Tool kann uns dabei helfen, das interne Funktionsprinzip von Go-Funktionen zu analysieren. Wir können es verwenden, um: den Funktionsaufrufgraphen zu erhalten und die Aufrufbeziehung zu verstehen. Analysieren Sie die Funktionsleistung und identifizieren Sie Engpässe. Optimieren Sie die Zuweisung des Funktionsspeichers und reduzieren Sie die Speichernutzung.

Vergleich der Algorithmuszeitkomplexität von Arrays und verknüpften Listen: Zugriff auf Arrays O(1), verknüpfte Listen O(n); Einfügen von Arrays O(1), verknüpfte Listen Löschen von Arrays O(1). ), verknüpfte Listen O(n) (n); Sucharray O(n), verknüpfte Liste O(n).

In C++ ist ein Array eine Datenstruktur mit fester Größe, deren Größe zum Zeitpunkt der Erstellung angegeben werden muss, während ein Vektor eine Datenstruktur mit dynamischer Größe ist, deren Größe zur Laufzeit geändert werden kann. Arrays verwenden den Operator [], um auf Elemente zuzugreifen und diese zu ändern, während Vektoren die Methode push_back() verwenden, um Elemente hinzuzufügen, und den Operator [], um auf Elemente zuzugreifen. Arrays müssen delete[] verwenden, um Speicher freizugeben, während Vektoren erase() verwenden, um Elemente zu löschen.
