PHPでは、アレイは非常に重要なデータ構造であり、複数の値を保存および操作するためによく使用されます。配列を柔軟に初期化するために、PHPは多くの組み込み関数を提供します。その中には、 array_fill()とarray_walk()が2つの一般的に使用される関数です。これら2つの機能を組み合わせることで、配列の動的値を初期化するのが非常に便利です。
array_fill()関数は、配列を入力するために使用されます。 3つのパラメーターを受け入れます。
array_fill(int $start_index, int $num, mixed $value): array
$ start_index :配列が埋め始める位置(インデックス)。
$ num :塗りつぶしの数。埋める要素の数を示します。
$値:パディングの値。
array_fill()新しい配列を作成し、配列の各要素を$値に設定します。
例:
$array = array_fill(0, 5, 'apple');
print_r($array);
出力:
Array
(
[0] => apple
[1] => apple
[2] => apple
[3] => apple
[4] => apple
)
array_walk()関数は、配列の各要素を反復し、コールバック関数を介して各要素を処理します。その基本的な構文は次のとおりです。
array_walk(array &$array, callable $callback, mixed $userdata = null): bool
$配列:保留中の配列。
$ callback :コールバック関数、各要素の処理。
$ userData :コールバック関数に渡すことができる追加のデータ(オプション)。
例:
$array = ['apple', 'banana', 'cherry'];
array_walk($array, function (&$item, $key) {
$item = strtoupper($item); // 配列要素を大文字に変換します
});
print_r($array);
出力:
Array
(
[0] => APPLE
[1] => BANANA
[2] => CHERRY
)
array_fill()とarray_walk()を組み合わせて使用することにより、配列を初期化するときに動的値を割り当ててから処理できます。たとえば、複数の動的データを含む配列を初期化してから、 array_walk()を使用して各要素を変更できます。
10個のURLで配列を初期化し、 array_walk()を介して各URLを変更すると仮定します(たとえば、ドメイン名m66.netを置き換えます):
<?php
// 使用 array_fill contasを初期化します 10 個々 URL の配列
$urls = array_fill(0, 10, 'http://example.com/page');
// 使用 array_walk 修改每個々 URL ドメイン名
array_walk($urls, function (&$url) {
// ドメイン名を置き換えます m66.net
$url = preg_replace('/http:\/\/.*?\//', 'http://m66.net/', $url);
});
// 输出修改后の配列
print_r($urls);
?>
出力:
Array
(
[0] => http://m66.net/page
[1] => http://m66.net/page
[2] => http://m66.net/page
[3] => http://m66.net/page
[4] => http://m66.net/page
[5] => http://m66.net/page
[6] => http://m66.net/page
[7] => http://m66.net/page
[8] => http://m66.net/page
[9] => http://m66.net/page
)
この例では、 array_fill()関数は、10の同一のURLを含む配列を初期化します。次に、 array_walk()関数を使用して配列を反復し、各URLのドメイン名をm66.netに変更します。
array_fill()とarray_walk()を組み合わせることにより、配列を柔軟に初期化および変更できます。 array_fill()は、同じ値のArrayを作成するのに役立ち、 Array_walk()は配列を通過してより複雑な操作を実行する機能を提供します。これら2つの組み合わせは、特に配列内の各要素の動的計算または変更を実行する必要がある場合、動的配列の初期化を処理するのに最適です。