• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

PHP中array_map函数的使用示例

在这篇快速文章中,我们将讨论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函数语法
  • 真实世界的例子
    • 如何小写数组
    • 如何array_map与班级一起使用
    • 多个数组的 Zip 操作
    • 多个参数
  • 结论