當前位置: 首頁> 最新文章列表> [如何使用array_map() 函數來轉換數字數組中的元素?詳細步驟解析

[如何使用array_map() 函數來轉換數字數組中的元素?詳細步驟解析

M66 2025-06-29

在PHP 中, array_map()函數是一個非常有用的函數,它可以對數組中的每個元素應用一個回調函數,並返回一個新數組,包含經過回調函數處理後的元素。這使得它在處理數字數組、字符串數組甚至混合數組時都變得非常高效和方便。在這篇文章中,我們將詳細解析如何使用array_map()函數來轉換數字數組中的元素。

1. array_map()函數的基本語法

<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 :一個回調函數,它將應用於數組的每個元素。這個回調函數可以是一個匿名函數、內置函數或用戶自定義函數。

  • $array :要處理的第一個數組,可以是任何類型的數組。

  • $arrays :如果有多個數組作為參數,它們的元素將會一一對應地傳遞給回調函數。

2. 基本示例:使用array_map()對數字數組進行平方轉換

假設我們有一個包含一些整數的數組,想要使用array_map()來返回一個新的數組,數組中的每個元素都是原數組中對應元素的平方。

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">9</span></span><span>
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; </span><span><span class="hljs-number">16</span></span><span>
    [</span><span><span class="hljs-number">4</span></span><span>] =&gt; </span><span><span class="hljs-number">25</span></span><span>
)
</span></span>

在這個例子中,我們通過匿名函數將每個數字平方,並使用array_map()返回一個新數組。

3. 使用內置函數作為回調函數

array_map()不僅可以使用匿名函數,還可以使用PHP 內置的函數。例如,我們可以利用sqrt()函數來計算每個數字的平方根。

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
    [</span><span><span class="hljs-number">4</span></span><span>] =&gt; </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>

在這個示例中,我們直接傳入了sqrt函數,而array_map()會自動對數組中的每個元素調用該函數。

4. 處理多個數組的情況

array_map()還支持同時處理多個數組。在這種情況下,回調函數將接收來自每個數組的對應元素。例如,假設我們有兩個數組,分別存儲兩個數字集合,我們想要對這些數字進行加法操作:

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">5</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">7</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">9</span></span><span>
)
</span></span>

在這個例子中,我們傳遞了兩個數組給array_map() ,它逐個元素地將它們相加,返回了一個新的數組。

5. 數組鍵名保留

需要注意的是, array_map()會丟失原數組的鍵名。如果希望保留鍵名,可以使用array_map()的返回結果和array_keys()配合使用,或者手動保留鍵名。不過, array_map()本身並不會為我們保留原數組的鍵名。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span> =&gt; </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> =&gt; </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">3</span></span><span> =&gt; </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">?&gt;</span></span><span>
</span></span>

輸出結果:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">100</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">400</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">900</span></span><span>
)
</span></span>

如上所示,鍵名已被重置為索引數組形式。如果想要保留鍵名,可以考慮結合array_map()和其他數組操作函數。

6. 總結

  • array_map()是一個高效的數組操作函數,用來對數組的每個元素進行轉換。

  • 你可以傳遞任何有效的回調函數(匿名函數或內置函數)來處理數組中的元素。

  • array_map()允許同時處理多個數組,回調函數將獲得每個數組中對應位置的元素。

  • 該函數不會保留原數組的鍵名,因此需要額外操作時可以考慮其他函數輔助。

通過熟練掌握array_map() ,你可以在處理數組時提高代碼的簡潔性和可讀性,是一種非常常用且強大的工具。