卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11179本站已运行3223

PHP中如何将多个数组按照指定键名合并为一个数组

PHP中如何将多个数组按照指定键名合并为一个数组

在开发中,我们经常会遇到将多个数组按照指定键名合并为一个数组的需求。这种需求在处理数据时非常常见,特别是在处理数据库结果集等情况下。本文将介绍几种常见的方法来实现这个功能,并给出相应的代码示例。

方法一:使用循环遍历

最简单的方法是使用循环遍历所有的数组,并根据指定键名将相应的值加入到新的数组中。示例代码如下:

function mergeArrays($key, ...$arrays)
{
    $result = [];
    
    foreach ($arrays as $array) {
        if (isset($array[$key])) {
            $result[] = $array[$key];
        }
    }
    
    return $result;
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

运行以上代码,输出结果为:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

方法二:使用array_map函数

array_map函数可以将一个回调函数作用于多个数组上,并返回一个新的数组。我们可以利用这个函数来实现多个数组的合并。示例代码如下:

function mergeArrays($key, ...$arrays)
{
    $callback = function ($array) use ($key) {
        return $array[$key] ?? null;
    };
    
    $result = array_map($callback, $arrays);
    
    return array_filter($result, function($value) {
        return $value !== null;
    });
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

运行以上代码,输出结果为:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

方法三:使用array_reduce函数

array_reduce函数用于对数组中的元素进行迭代处理,将它们按照指定的回调函数进行处理,并返回一个最终结果。我们可以利用这个函数来实现多个数组的合并。示例代码如下:

function mergeArrays($key, ...$arrays)
{
    $callback = function ($result, $array) use ($key) {
        if (isset($array[$key])) {
            $result[] = $array[$key];
        }
        return $result;
    };
    
    $result = array_reduce($arrays, $callback, []);
    
    return $result;
}

$array1 = ['id' => 1, 'name' => 'Alice'];
$array2 = ['id' => 2, 'name' => 'Bob'];
$array3 = ['id' => 3, 'name' => 'Charlie'];

$result = mergeArrays('name', $array1, $array2, $array3);

print_r($result);

运行以上代码,输出结果为:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)
卓越飞翔博客
上一篇: PHP和WebDriver扩展:如何模拟用户的滚动和拖拽行为
下一篇: 如何利用PHP对接七牛云存储接口
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏