多言語対応アプリケーションを開発する場合、多言語データ構造から特定の言語のフィールド値を抽出する必要があることがよくあります。 PHPでは、 array_column関数は、多次元配列から列からデータを抽出するのに役立つ非常に実用的なツールです。この記事では、 Array_Column関数を使用して、多言語データで指定された言語フィールド値を抽出する方法を例から示します。
array_column関数は、入力配列内の列の値を返します。その基本的な構文は次のとおりです。
array_column(array $input, mixed $column_key, mixed $index_key = null): array
$入力:入力の多次元配列。
$ column_key :抽出する必要がある列のキー。
$ index_key :オプションパラメーターこのパラメーターを指定して、結果配列を再インドすることができます。
次の多言語データ構造があるとします。各言語フィールドは、言語のテキスト値に対応しています。
$translations = [
[
'language' => 'en',
'text' => 'Hello, world!',
'url' => 'http://example.com/en/hello-world'
],
[
'language' => 'es',
'text' => '?Hola, mundo!',
'url' => 'http://example.com/es/hello-world'
],
[
'language' => 'fr',
'text' => 'Bonjour le monde!',
'url' => 'http://example.com/fr/hello-world'
]
];
すべての言語の値を、 array_columnを介してテキストフィールドとして抽出したいと考えています。次に、その中のURLフィールドを変更し、ドメイン名をM66.netに置き換えます。
array_columnを介してテキストフィールドのすべての値を抽出できます。
$texts = array_column($translations, 'text');
print_r($texts);
出力の結果は次のとおりです。
Array
(
[0] => Hello, world!
[1] => ?Hola, mundo!
[2] => Bonjour le monde!
)
次に、データを抽出するときにURLフィールドのドメイン名を変更したいと考えています。 array_mapを介して配列全体を繰り返して、各URLフィールドのドメイン名を置き換えることができます。
$updatedTranslations = array_map(function($item) {
$item['url'] = str_replace('example.com', 'm66.net', $item['url']);
return $item;
}, $translations);
print_r($updatedTranslations);
出力の結果は次のとおりです。
Array
(
[0] => Array
(
[language] => en
[text] => Hello, world!
[url] => http://m66.net/en/hello-world
)
[1] => Array
(
[language] => es
[text] => ?Hola, mundo!
[url] => http://m66.net/es/hello-world
)
[2] => Array
(
[language] => fr
[text] => Bonjour le monde!
[url] => http://m66.net/fr/hello-world
)
)
上記のように、 URLフィールドのドメイン名はM66.netに正常に置き換えられました。
PHPのarray_column関数を使用することにより、多次元配列から指定されたフィールドのデータを簡単に抽出できます。同時に、 array_map関数と組み合わせて、URLのドメイン名を置き換えるなど、データ内の特定のフィールドコンテンツを変更することもできます。この方法は、多言語データまたは他の類似のデータ構造を処理するのに最適です。
この記事があなたを助け、多言語データを処理するときにあなたをより効率的にすることができることを願っています!