HOWTO · PHP

PHP 中的 array_map 和 array_walk 函式

本文向我們展示了 array_map 和 array_walk 函式如何修改陣列中的元素。

在本教程中,我們將介紹 array_map()array_walk() 函式。我們將看到如何使用使用者定義的函式修改陣列中的所有元素。

此外,它將涵蓋你可以使用上述功能的不同方式。

使用 PHP array_map() 函式通過使用者定義的函式修改陣列中的元素

你可以使用 array_map() 函式將陣列中的所有值傳送到使用者定義的函式。

在下面的示例程式碼中,我們將陣列 $arr 中的值傳送到函式 divide 並返回新值。

示例程式碼 1:

<?php
// Define the function divide
function divide($n) {
	
	return($n/$n);
	
}
$a = array(2, 4, 6, 8, 10);

print_r(array_map("divide", $a));

?>	

輸出:

Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 )

在上面的程式碼中,我們的函式 divide 將陣列 $a 中的所有值除以相應的值;因此輸出 1

讓我們嘗試使用多個陣列。

示例程式碼 2:

<?php
// Define the function minusAdd
function minusAdd($t, $r, $k) {
	
	return($t - $r + $k);
	
}
$arr1 = array(28, 14, 76, 38, 10);
$arr2 = array(4, 6, 20, 12, 3);
$arr3 = array(12, 6, 7 ,8 ,9);

print_r(array_map("minusAdd", $arr1, $arr2, $arr3));

?>	

輸出:

Array ( [0] => 36 [1] => 14 [2] => 63 [3] => 34 [4] => 16 )

如下例所示,我們可以使用 array_map() 函式來更改陣列中的元素。

示例程式碼 3:

<?php

function synonym($s) {
	if ($s === "Male Horse") {
		return "Stallion";
	}
	return $s;
}
$arr = array("Female Horse", "Male Horse", "Pony");

print_r(array_map("synonym", $arr));

?>

輸出:

Array ( [0] => Female Horse [1] => Stallion [2] => Pony )

從上面的程式碼中,我們在 array_map 函式的幫助下將 Male Horse 更改為 Stallion

你還可以使用 array_map 函式建立一個陣列。要使程式碼正常工作,你必須使用 null 引數來代替定義的函式。

示例程式碼 4:

<?php

// Create an array of an array

$a1 = array('Apple', 'Eggplant', 'Cucumber', 'Mango');
$a2 = array('Fruit', 'Vegetable', 'Vegetable', 'Fruit');

$result = array_map( null, $a1, $a2);

print_r($result);

?>

輸出:

Array ( [0] => Array ( [0] => Apple [1] => Fruit ) [1] => Array ( [0] => Eggplant [1] => Vegetable ) [2] => Array ( [0] => Cucumber [1] => Vegetable ) [3] => Array ( [0] => Mango [1] => Fruit ) )

在 PHP 中使用 array_walk() 使用包含鍵的函式執行陣列

由於 array_map() 函式不處理鍵和引數,我們使用 array_walk(),如下例所示。

示例程式碼 6:

<?php

function assign($color, $key) {
	echo "The $key is $color <br>";
}
$arr = array("Apple" => "red", "Eggplant" => "purple");

array_walk($arr, "assign");

?>

輸出:

The Apple is red
The Eggplant is purple