PHPでは、 array_columnとarray_chunkは非常に一般的に使用される配列操作関数です。 Array_Columnは、2次元配列で列の値を抽出できますが、 Array_Chunkはアレイを複数の小片に分割できます。 Array_Columnの使用と組み合わせて、Arrayの長さに応じてArray_Chunkの2番目のパラメーターを動的に設定する必要がある場合、Arrayデータをより柔軟に処理するのに役立ちます。
array_column($ array、$ column_key、$ index_key) :2次元配列から指定された列の値を抽出します。 3つのパラメーターを受け取ります。
$配列:元の配列。
$ column_key :抽出する必要がある列名または列インデックス。
$ index_key :オプション、インデックス列を表します。指定されていない場合、タイル配列が返されます。
array_chunk($ array、$ size、$ preserve_keys = false) :アレイを複数の小さな配列に分割すると、各小さな配列には$ size要素が含まれます。多次元配列を返します。
$配列:元の配列。
$サイズ:各サブアレイのサイズ。
$ preserve_keys :元の配列のキーを保持するかどうか。
各要素が人の情報(名前、年齢、性別など)を表す多次元配列があるとします。 array_columnを使用して、データの列の1つを抽出できます。例えば:
$people = [
['name' => 'Alice', 'age' => 25, 'gender' => 'female'],
['name' => 'Bob', 'age' => 30, 'gender' => 'male'],
['name' => 'Charlie', 'age' => 35, 'gender' => 'male'],
['name' => 'David', 'age' => 28, 'gender' => 'male']
];
// 抽出する 'name' リスト
$names = array_column($people, 'name');
print_r($names);
出力:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
[3] => David
)
上記のように、 array_columnは、人の配列に名前列を抽出します。
ここで、配列を複数のサブアレイに分割すると、サブアレイのサイズが元の配列の長さに応じて動的に設定されているとします。たとえば、配列の長さが大きい場合、各サブアレイのサイズを10に設定できます。配列の長さが小さい場合、各サブアレイのサイズを5に設定できます。Count ()関数を使用して配列の長さを取得し、この長さに基づいてArray_Chunkの2番目のパラメーターを決定できます。
$names = array_column($people, 'name');
$array_length = count($names);
// 各サブアレイのサイズを動的に設定します
$chunk_size = ($array_length > 3) ? 2 : 1; // 配列の長さがより大きい場合3,次に、各サブアレイに含まれます2要素,それ以外の場合は、含める1要素
$chunked = array_chunk($names, $chunk_size);
print_r($chunked);
出力(配列の長さが4であると仮定):
Array
(
[0] => Array
(
[0] => Alice
[1] => Bob
)
[1] => Array
(
[0] => Charlie
[1] => David
)
)
上記のように、 array_columnで抽出された名前のarrayの長さに基づいて、各サブアレイのサイズを動的に設定します。
実際の開発では、URLでデータを処理する必要があり、これらのURLのドメイン名をM66.netに置き換える必要がある場合は、 str_replaceを使用して実装できます。
$urls = [
'https://www.example.com/page1',
'https://www.example.com/page2',
'https://www.example.com/page3',
];
// 使用 str_replace ドメイン名を置き換えます
$updated_urls = array_map(function($url) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);
print_r($updated_urls);
出力: