在这篇快速文章中,我们将讨论array_mapphp 中的函数。基本上,我们将介绍array_map函数的语法并演示如何将其与实际示例一起使用。
该array_map函数允许您应用回调函数来转换数组的元素。当您想对数组的每个元素执行特定操作时,它非常有用。除此之外,它还允许您将多个数组组合成一个多维数组。
foreach 与其使用const结构遍历所有数组元素以对它们执行特定操作,不如选择array_map专门为此构建的函数。
array_map函数语法
在本节中,我们将通过array_map函数的语法来了解它是如何工作的。
让我们看一下array_map函数的语法:
array_map ( callable|null $callback , array $array , array ...$arrays ) : array
第一个参数是回调函数,当array_map函数遍历数组元素时调用。它可以是用户定义的函数或可调用形式的类方法。
第二个参数是回调函数将在其上运行的源数组。
在大多数情况下,您只需要这两个参数。但是该array_map函数允许您传递作为参数传递给回调函数的其他数组参数。它们都将在输出中组合成一个多维数组。有趣的是,您可以将其作为回调null 传递,并且array_map 只需对源数组执行 zip 操作。我将在下一节中用几个真实的例子来证明这一点。
该array_map函数返回由回调函数处理的所有值的数组。
在下一节中,我们将通过几个实际示例来了解该array_map函数的工作原理。
真实世界的例子
在本节中,我们将讨论如何以array_map不同的方式使用该函数。
如何小写数组
这是最基本和最有用的例子之一。当您想对数组的所有元素执行特定操作时,array_map函数就是要走的路!
<?php function lowercase($element) { return strtolower($element); } $array = ['Apple', 'BANANA', 'Mango', 'orange', 'GRAPES']; $results = array_map('lowercase', $array); print_r($results); /** Output: Array ( [0] => apple [1] => banana [2] => mango [3] => orange [4] => grapes ) **/ ?>
如您所见,我们lowercase在第一个参数中传递了可调用对象,因此这会将数组的所有元素转换为小写。
如何array_map与班级一起使用
在此示例中,我们将看到如何将类方法应用于数组的所有元素。
<?php class Utility { public function formatPrice($element) { if (strpos($element, '$') === FALSE) { return '$' . $element; } return $element; } } $objUtility = new Utility(); $array = ['1', '$4', '6', '3', '$10']; $results = array_map(array($objUtility, 'formatPrice'), $array); print_r($results); /** Output: Array ( [0] => $1 [1] => $4 [2] => $6 [3] => $3 [4] => $10 ) **/ ?>
在上面的示例中,我们array($objUtility, 'formatPrice')在第一个参数中作为可调用对象传递。基本上,我们只是检查一个数组元素是否以 $ 符号为前缀,如果没有,我们就在前面加上它。
多个数组的 Zip 操作
回想一下,在函数的语法中,您可以作为第一个参数而不是可调用对象array_map传递。null在本节中,我们将通过一个示例来了解它是如何工作的。
<?php $employeeNames = ['john', 'mark', 'lisa']; $employeeEmails = ['john@example.com', 'mark@example.com', 'lisa@example.com']; $results = array_map(null, $employeeNames, $employeeEmails); print_r($results); /** Output: Array ( [0] => Array ( [0] => john [1] => john@example.com ) [1] => Array ( [0] => mark [1] => mark@example.com ) [2] => Array ( [0] => lisa [1] => lisa@example.com ) ) **/
当我们null在第一个参数中传递了值时,它会对从第二个参数开始传递的所有数组执行 zip 操作。在我们的例子中,我们传递了两个数组,array_map函数将它们组合成一个单一的多维数组。
多个参数
正如我们之前讨论的,您可以将多个数组传递给array_map. 在本节中,我们将了解如何将它与回调函数一起使用。
<?php class Employee { public $name; public $employee; public function __construct($name, $employee) { $this->name = $name; $this->employee = $employee; } } function createEmployeeObject($name, $email) { return new Employee($name, $email); } $employeeNames = ['john', 'mark', 'lisa']; $employeeEmails = ['john@example.com', 'mark@example.com', 'lisa@example.com']; $results = array_map('createEmployeeObject', $employeeNames, $employeeEmails); print_r($results); /** Output: Array ( [0] => Employee Object ( [name] => john [employee] => john@example.com ) [1] => Employee Object ( [name] => mark [employee] => mark@example.com ) [2] => Employee Object ( [name] => lisa [employee] => lisa@example.com ) ) **/
在上面的示例中,createEmployeeObject可调用对象生成一个对象数组Employee。
结论
在本文中,我们讨论了array_mapPHP 中函数的基础知识。我们还通过几个实际示例来展示该函数的强大array_map功能。
- 如何小写数组
- 如何array_map与班级一起使用
- 多个数组的 Zip 操作
- 多个参数