Inhaltsverzeichnis
array_filterRückruffunktion verwenden, um die Zellen im Array zu filtern
" >array_filterRückruffunktion verwenden, um die Zellen im Array zu filtern
array_walk — 使用用户自定义函数对数组中的每个元素做回调处理" >array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
Heim Backend-Entwicklung PHP-Tutorial Rückruffunktionen und Arrays

Rückruffunktionen und Arrays

Apr 14, 2018 pm 04:37 PM
Funktion Array

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_filterRü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:EntscheidungcallbackEmpfangenes Parameterformular

  • ARRAY_FILTER_USE_KEY - Akzeptiert den Schlüsselnamen als einzigen Parametercallback

  • ARRAY_FILTER_USE_BOTH - callbackAkzeptieren 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 callbackArray nach Funktion. Die Anzahl der Funktionsparameter callback und die Anzahl der an array_map() übergebenen Arrays müssen gleich sein.

Parameterbeschreibung:

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_reduceVerwenden 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!

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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

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)

Heiße Themen

PHP-Tutorial
1596
276
Vollständige Sammlung von Excel-Funktionsformeln Vollständige Sammlung von Excel-Funktionsformeln May 07, 2024 pm 12:04 PM

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.

Was ist zu beachten, wenn Golang-Funktionen Kartenparameter empfangen? Was ist zu beachten, wenn Golang-Funktionen Kartenparameter empfangen? Jun 04, 2024 am 10:31 AM

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.

Die Rolle der PHP-Array-Gruppierungsfunktion beim Auffinden doppelter Elemente Die Rolle der PHP-Array-Gruppierungsfunktion beim Auffinden doppelter Elemente May 05, 2024 am 09:21 AM

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.

Können Arrays als Funktionsparameter verwendet werden? Können Arrays als Funktionsparameter verwendet werden? Jun 04, 2024 pm 04:30 PM

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.

PHP-Array-Schlüsselwertaustausch: Analyse der Vor- und Nachteile gängiger Algorithmen PHP-Array-Schlüsselwertaustausch: Analyse der Vor- und Nachteile gängiger Algorithmen May 04, 2024 pm 10:39 PM

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.

Verwenden Sie Tools, um die innere Welt der Golang-Funktionen zu erkunden Verwenden Sie Tools, um die innere Welt der Golang-Funktionen zu erkunden May 06, 2024 pm 01:51 PM

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 zeitlichen Komplexität des Algorithmus von PHP-Arrays und verknüpften Listen Vergleich der zeitlichen Komplexität des Algorithmus von PHP-Arrays und verknüpften Listen May 07, 2024 pm 01:54 PM

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).

Was ist der Unterschied zwischen Arrays und Vektoren in C++? Was ist der Unterschied zwischen Arrays und Vektoren in C++? Jun 02, 2024 pm 12:25 PM

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.

See all articles