当前位置: 首页> 最新文章列表> 如何用 array_fill() 搭配 array_merge() 快速构造一个复杂的多维数组?

如何用 array_fill() 搭配 array_merge() 快速构造一个复杂的多维数组?

M66 2025-06-13

在 PHP 中,我们经常会需要构造复杂的多维数组。通过 PHP 内建的函数 array_fill()array_merge(),我们可以高效地完成这一任务。今天,我们就来探讨如何使用这两个函数来快速构造复杂的多维数组。

1. array_fill() 函数简介

array_fill() 函数用于创建一个数组,并将每个元素都填充为指定的值。这个函数非常适合用于构造具有相同值的数组。它的基本语法如下:

array_fill($start_index, $num, $value);
  • $start_index:指定填充数组的起始索引。

  • $num:指定数组中元素的个数。

  • $value:要填充数组的值。

例如,下面的代码会创建一个长度为 5 的数组,每个元素的值都为 "PHP"

$filled_array = array_fill(0, 5, 'PHP');
print_r($filled_array);

输出:

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

2. array_merge() 函数简介

array_merge() 函数用于将一个或多个数组合并成一个数组。它将所有数组的元素都加入到一个新的数组中,返回一个包含所有元素的新数组。其基本语法如下:

array_merge($array1, $array2, ...);
  • $array1, $array2, ...:要合并的一个或多个数组。

下面的代码示例展示了如何使用 array_merge() 合并两个数组:

$array1 = [1, 2];
$array2 = [3, 4];
$merged_array = array_merge($array1, $array2);
print_r($merged_array);

输出:

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

3. 如何结合 array_fill()array_merge() 构建复杂的多维数组?

通过 array_fill() 创建的数组,可以作为 array_merge() 的输入来构建一个更为复杂的多维数组。以下是一个具体的示例:假设我们需要创建一个包含多组相同数据的多维数组,其中每一组数据都具有相同结构,但内容略有不同。

示例:构建多维数组

我们使用 array_fill() 为每个子数组初始化默认值,然后利用 array_merge() 合并它们,最终构建一个复杂的多维数组。

<?php
// 使用 array_fill 创建多个相同结构的子数组
$defaultValues = array_fill(0, 3, 'default');  // 创建一个包含 3 个 'default' 的数组

// 创建不同的数据
$group1 = array_merge(['group' => 'group1'], $defaultValues);
$group2 = array_merge(['group' => 'group2'], $defaultValues);
$group3 = array_merge(['group' => 'group3'], $defaultValues);

// 合并成一个多维数组
$complexArray = [$group1, $group2, $group3];

print_r($complexArray);
?>

输出:

Array
(
    [0] => Array
        (
            [group] => group1
            [0] => default
            [1] => default
            [2] => default
        )

    [1] => Array
        (
            [group] => group2
            [0] => default
            [1] => default
            [2] => default
        )

    [2] => Array
        (
            [group] => group3
            [0] => default
            [1] => default
            [2] => default
        )
)

在这个例子中,array_fill() 用于为每个组填充相同的默认值,array_merge() 用于合并这些数据成最终的多维数组。我们还为每个组添加了一个不同的标识符 group1, group2, group3,使得每个子数组具有唯一的标识。

4. 使用 URL 替换示例

假设我们要构建一个包含多个 URL 的数组,并且要将所有的域名替换为 m66.net。我们可以先使用 array_fill() 创建一个包含多个默认 URL 的数组,然后通过 array_map() 对每个 URL 进行处理,替换掉域名部分。

<?php
// 创建一个包含多个 URL 的数组
$urls = array_fill(0, 3, 'http://example.com/path/to/resource');

// 使用 array_map 替换所有 URL 的域名为 m66.net
$updatedUrls = array_map(function($url) {
    return preg_replace('/https?:\/\/[^\/]+/', 'http://m66.net', $url);
}, $urls);

print_r($updatedUrls);
?>

输出: