PHPでは、多くの場合、複雑な多次元アレイを構築する必要があります。 PHPの組み込み関数array_fill()とarray_merge()を使用して、このタスクを効率的に完了できます。今日は、これら2つの関数を使用して複雑な多次元アレイを迅速に構築する方法を探ります。
array_fill()関数は、配列を作成し、各要素を指定された値で埋めるために使用されます。この関数は、同じ値の配列を構築するのに非常に適しています。その基本的な構文は次のとおりです。
array_fill($start_index, $num, $value);
$ start_index :フィルアレイの開始インデックスを指定します。
$ num :配列内の要素の数を指定します。
$値:配列を入力する値。
たとえば、次のコードは長さ5の配列を作成し、各要素には「PHP」の値があります。
$filled_array = array_fill(0, 5, 'PHP');
print_r($filled_array);
出力:
Array
(
[0] => PHP
[1] => PHP
[2] => PHP
[3] => PHP
[4] => PHP
)
array_merge()関数は、1つ以上の配列を配列に結合するために使用されます。配列のすべての要素を新しい配列に追加し、すべての要素を含む新しい配列を返します。基本的な構文は次のとおりです。
array_merge($array1, $array2, ...);
$ array1、$ array2、... :マージする1つ以上の配列。
次のコードの例は、array_merge()を使用して2つの配列をマージする方法を示しています。
$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
)
array_fill()によって作成されたarrayは、 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()を使用してデータを最終的な多次元配列にマージします。また、各グループグループ1 、 Group2 、 Group3に異なる識別子を追加して、各サブアレイに一意のアイデンティティを持つようにします。
複数の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);
?>
出力: