PHPでは、 Array_Columnは、多次元配列から列の値を抽出する非常に便利な関数です。オブジェクトの配列を処理すると、 array_columnはオブジェクトに特定のプロパティ値を抽出するのにも役立ちます。この記事では、 array_column関数を使用して、オブジェクト配列から特定のプロパティを抽出する方法と、注意すべきものを紹介します。
それぞれが名前やURLなどの異なるプロパティを持つ複数のオブジェクトの配列があるとします。 array_columnを使用して、特定の属性値を抽出できます。
<?php
// 複数のオブジェクトを含む配列を定義します
$objects = [
(object) ['id' => 1, 'name' => 'Alice', 'url' => 'https://example.com'],
(object) ['id' => 2, 'name' => 'Bob', 'url' => 'https://example.org'],
(object) ['id' => 3, 'name' => 'Charlie', 'url' => 'https://example.net']
];
// 使用 array_column 抽出する "name" 財産
$names = array_column($objects, 'name');
print_r($names);
// 使用 array_column 抽出する "url" 財産并替换域名
$urls = array_column($objects, 'url');
$urls = array_map(function($url) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);
print_r($urls);
?>
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
Array
(
[0] => https://m66.net
[1] => https://m66.net
[2] => https://m66.net
)
抽出名属性: array_column($ objects、 'name')を使用して、オブジェクト配列内のすべてのオブジェクトの名前属性値を抽出します。
URL属性を抽出してドメイン名を置き換えます。URLの処理中に、最初にすべてのオブジェクトのURL属性を抽出し、次にarray_mapとpreg_replace関数を使用して、元のURLのドメイン名パーツをM66.netに置き換えます。
オブジェクト配列: array_column関数は通常、連想配列に使用されますが、オブジェクト配列にも使用できます。配列内の要素がオブジェクトである場合、 array_columnは属性名で対応する値を抽出します。
ヌル値処理:配列内のオブジェクトに指定されたプロパティがない場合、 array_columnは結果にnullを返します。特定のプロパティが不足しているためにプログラムがエラーを引き起こさないように、null値の処理に注意を払う必要があります。
パフォーマンスの問題:非常に大きな配列の場合、 array_columnとarray_mapの組み合わせがパフォーマンスの問題を引き起こす可能性があります。不必要な配列トラバーサルを避けるために、コードを最適化することを検討できます。
URLの交換:URLのドメイン名を置き換えると、 preg_replaceを使用して、ドメイン名パーツのみが交換されるようにしました。このアプローチは非常に柔軟ですが、交換エラーを避けるために正規表現の精度を確保する必要があります。