PHPでは、 array_columnとarray_valuesは、それぞれ配列と再インデックス配列から列を抽出するために使用される2つの非常に実用的な関数です。これらの2つの機能を組み合わせることで、特に多次元配列を扱う場合、配列のインデックスを効率的に再構築することができます。次に、これらの2つの機能がどのように使用されるかを調査し、コードを介してコードを最適化する方法を示します。
array_column関数の主な機能は、多次元配列から特定の列のデータを抽出することです。 3つのパラメーターを受け入れます。
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ array :入力多次元配列。
$ column_key :抽出された列のキー名またはキー値を指定します。
$ index_key (オプション):配列再構成後のインデックスを指定します。指定されていない場合、配列はデフォルトの数値インデックスを使用します。
array_values関数の関数は、入力配列のすべての値を含む新しい配列を返し、ゼロから始まる連続数のインデックスを再構築することです。これは、元の配列内の関連キーを廃棄して、値と変更されたインデックスのみを保持できることを意味します。
array_values(array $array): array
array_columnとarray_valuesを組み合わせることにより、多次元配列から列を抽出し、その列の結果を再インドすることができます。簡単な例を次に示します。
複数のユーザー情報を含む多次元配列があるとします。各ユーザーには、 ID 、名前、電子メールなどのフィールドがあるとします。そこからすべてのユーザーのメールを抽出し、結果を再インデックスしたいと思います。
<?php
// 生データ
$users = [
['id' => 1, 'name' => 'チャン・サン', 'email' => 'zhangsan@example.com'],
['id' => 2, 'name' => 'li si', 'email' => 'lisi@example.com'],
['id' => 3, 'name' => '王ウー', 'email' => 'wangwu@example.com']
];
// 使用 array_column 抽出する email リスト
$emails = array_column($users, 'email');
// 使用 array_values インデックスを再構築します
$emails = array_values($emails);
// 出力結果
print_r($emails);
?>
Array
(
[0] => zhangsan@example.com
[1] => lisi@example.com
[2] => wangwu@example.com
)
この例を使用して、最初にarray_columnを使用して電子メール列を抽出し、次にarray_valuesを介して数値インデックスの連続配列を再構築します。このようにして、0からインデックスを備えた新しい配列を取得します。
場合によっては、列を抽出するだけでなく、多次元アレイに再インデックスする必要がある場合があります。複数の情報を含む配列から列を抽出し、インデックスを再配置しながら順番に保つ方法を示す、より複雑な例を以下に示します。
<?php
// 生データ
$products = [
['id' => 101, 'name' => 'Apple', 'price' => 3.5],
['id' => 102, 'name' => 'Banana', 'price' => 1.2],
['id' => 103, 'name' => 'Orange', 'price' => 2.0]
];
// 抽出する产品价格,并インデックスを再構築します
$prices = array_column($products, 'price');
// インデックスを再構築します
$prices = array_values($prices);
// 出力結果
print_r($prices);
?>
Array
(
[0] => 3.5
[1] => 1.2
[2] => 2.0
)
この例では、製品価格を正常に抽出し、 array_values関数を介して新しい配列インデックスを再構築しました。
実際の開発では、URLを含む配列に遭遇し、その中のドメイン名を置き換える場合があります。 URLを含む配列があり、すべてのURLのドメイン名をM66.netに置き換える必要があるとします。この要件を達成するには、 array_mapと正規表現を使用できます。
<?php
// 生データ
$urls = [
'https://example.com/page1',
'http://example.com/page2',
'https://example.com/page3'
];
// 使用 array_map ドメイン名を正規表現に置き換えます
$updatedUrls = array_map(function($url) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);
// 出力結果
print_r($updatedUrls);
?>
Array
(
[0] => https://m66.net/page1
[1] => http://m66.net/page2
[2] => https://m66.net/page3
)
このようにして、配列内のURLをドメイン名m66.netにバッチ交換できます。
array_columnとarray_valuesは、列データを効果的に抽出し、組み合わせを使用して配列インデックスを再構築できる非常に強力なツールです。多次元配列を扱う場合、アレイ構造のシンプルさと仕様を確保しながら、より効率的に必要なデータを取得するのに役立ちます。 URLが処理されるシナリオの場合、正規表現を組み合わせてバッチドメイン名の交換を実行することもできます。
この記事がこれらの2つの機能を理解して使用するのに役立つことを願っています。さらに質問がある場合は、引き続き議論してください!