In PHP ist die Funktion array_map () eine sehr nützliche Funktion, die eine Rückruffunktion für jedes Element in einem Array anwendet und ein neues Array zurückgibt, das die von der Rückruffunktion verarbeiteten Elemente enthält. Dies macht es sehr effizient und bequem, wenn Sie sich mit Arrays von Zahlen, Saitenarrays und sogar Mischen von Arrays befassen. In diesem Artikel werden wir ausführlich analysieren, wie die Funktion array_map () verwendet wird, um Elemente in einem numerischen Array zu konvertieren.
<span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ Callback : Eine Rückruffunktion, die auf jedes Element des Arrays angewendet wird. Diese Rückruffunktion kann eine anonyme Funktion, eine integrierte Funktion oder eine benutzerdefinierte Funktion sein.
$ Array : Das erste Array, das verarbeitet wird, das ein Array jeglicher Art sein kann.
$ arrays : Wenn es mehrere Arrays als Parameter gibt, werden ihre Elemente nacheinander an die Rückruffunktion übergeben.
Angenommen, wir haben ein Array mit einigen Zahlen und möchten Array_Map () verwenden, um ein neues Array zurückzugeben, und jedes Element im Array ist das Quadrat des entsprechenden Elements im ursprünglichen Array.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
</span><span><span class="hljs-variable">$squaredNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$number</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$number</span></span><span>;
}, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squaredNumbers</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">9</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">16</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">25</span></span><span>
)
</span></span>
In diesem Beispiel senken wir jede Nummer mit anonymer Funktion und verwenden Array_Map () , um ein neues Array zurückzugeben.
array_map () kann nicht nur anonyme Funktionen verwenden, sondern auch Funktionen in PHP verwenden. Zum Beispiel können wir die Funktion SQRT () verwenden, um die Quadratwurzel jeder Zahl zu berechnen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">9</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>, </span><span><span class="hljs-number">25</span></span><span>];
</span><span><span class="hljs-variable">$squareRoots</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'sqrt'</span></span><span>, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squareRoots</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>
In diesem Beispiel übergeben wir die SQRT -Funktion direkt, und Array_map () ruft die Funktion für jedes Element im Array automatisch auf.
Array_map () unterstützt auch die Verarbeitung mehrerer Arrays gleichzeitig. In diesem Fall empfängt die Rückruffunktion das entsprechende Element aus jedem Array. Angenommen, wir haben zwei Arrays, die zwei Zahlensätze speichern, und wir möchten die folgenden Zahlen hinzufügen:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>];
</span><span><span class="hljs-variable">$sumArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$a</span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span> + </span><span><span class="hljs-variable">$b</span></span><span>;
}, </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$sumArray</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">7</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">9</span></span><span>
)
</span></span>
In diesem Beispiel übergeben wir zwei Arrays an Array_Map () , was sie Element nach Element hinzufügt und ein neues Array zurückgibt.
Es ist zu beachten, dass Array_map () den Schlüsselnamen des ursprünglichen Arrays verliert. Wenn Sie den Schlüsselnamen beibehalten möchten, können Sie das Rückgabeergebnis von Array_Map () in Verbindung mit Array_Keys () verwenden oder den Schlüsselnamen manuell behalten. Array_map () selbst behält jedoch nicht den Schlüsselnamen des ursprünglichen Arrays für uns.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>];
</span><span><span class="hljs-variable">$squaredNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$number</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$number</span></span><span>;
}, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squaredNumbers</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgangsergebnis:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">100</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">400</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">900</span></span><span>
)
</span></span>
Wie oben gezeigt, wurde der Schlüsselname auf das Indexarray -Formular zurückgesetzt. Wenn Sie den Schlüsselnamen beibehalten möchten, können Sie in Betracht ziehen , Array_Map () und andere Array -Manipulationsfunktionen zu kombinieren.
Array_map () ist eine effiziente Array -Betriebsfunktion, die jedes Element eines Arrays umwandelt.
Sie können jede gültige Rückruffunktion (anonyme oder integrierte Funktionen) übergeben, um Elemente in einem Array zu verarbeiten.
Mit Array_Map () können mehrere Arrays gleichzeitig verarbeitet werden, und die Rückruffunktion erhält die Elemente an der entsprechenden Position in jedem Array.
Diese Funktion behält nicht den Schlüsselnamen des ursprünglichen Arrays bei, sodass andere Funktionsunterstützung berücksichtigt werden kann, wenn zusätzliche Vorgänge erforderlich sind.
Durch das Mastering array_map () können Sie die Einfachheit und Lesbarkeit Ihres Codes bei der Verarbeitung von Arrays verbessern und sind ein sehr häufiges und leistungsfähiges Werkzeug.
Verwandte Tags:
array_map