現在の位置: ホーム> 最新記事一覧> Array_Columnを使用して存在しない列を抽出する場合、PHPはどのように処理しますか?行動分析とFAQ分析

Array_Columnを使用して存在しない列を抽出する場合、PHPはどのように処理しますか?行動分析とFAQ分析

M66 2025-04-28

array_column()は、多次元配列から列からデータを抽出するために使用されるphpで一般的に使用される関数です。複雑なデータ構造から特定の情報を簡単に抽出するのに役立ちます。ただし、 Array_Column()を使用すると、多くの開発者が問題に遭遇する可能性があります。存在しない列を抽出しようとすると、PHPは何を処理しますか?この記事では、この質問の動作を詳細に分析し、いくつかの一般的な関連する質問に答えます。

array_column()関数の概要

array_column()関数の構文は次のとおりです。

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ array :入力多次元配列。

  • $ column_key :抽出される列の重要な値。列のキーが存在しない場合、 nullが返されます。

  • $ index_key :オプションのパラメーター。リターンアレイとして使用されるキー値を指定します。

この関数の関数は、指定された列のすべての要素を返すことです。与えられた$ column_keyが各サブアレイに存在する場合、その列のすべてのデータを抽出します。

存在しない列を抽出します

1.存在しない列を直接通過します

存在しない列を抽出しようとすると、 array_column()は、警告やエラーなしで空の配列を返します。例えば:

 $data = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 3, 'name' => 'Charlie']
];

$names = array_column($data, 'name');
print_r($names);

// 存在しない列を抽出してみてください 'age'
$ages = array_column($data, 'age');
print_r($ages);

出力結果:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)
Array
(
)

上記のように、存在しない列名(年齢など)が渡されると、 array_column()が空の配列を返します。この時点で、エラーや警告は投げられません。空の配列の単純な返品です。

2。 $ index_keyパラメーターの状況

$ index_keyパラメーターを同時に渡し、列が存在しない場合、PHPは空の配列を引き続き返します。存在しない列の場合、キー値マッピングは単に不可能であるため、 $ index_keyパラメーターは結果に影響を与えないことに注意してください。

 $names_with_key = array_column($data, 'name', 'id');
print_r($names_with_key);

// 存在しない列を用意してみてください
$ages_with_key = array_column($data, 'age', 'id');
print_r($ages_with_key);

出力結果:

 Array
(
    [1] => Alice
    [2] => Bob
    [3] => Charlie
)
Array
(
)

$ index_keyが設定されているかどうかにかかわらず、列が存在しないときにArray_column()は空の配列を返します。

よくある質問

1.なぜnullまたは他の値の代わりに空の配列が返されるのですか?

Array_Column()関数の設計におけるPHPは、存在しない列が「空の」列として扱われるため、空の配列を返します。これを行うと、機能の一貫性と単純さが保証され、開発中の予測不可能なエラーが回避されます。

2。一部のサブアレイに列がない場合はどうなりますか?

指定された列がいくつかのサブアレイに欠落している場合、 array_column()は、それらを含めることなくこれらのサブアレイを自動的にスキップします。例えば:

 $data = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2],
    ['id' => 3, 'name' => 'Charlie']
];

$names = array_column($data, 'name');
print_r($names);

出力結果:

 Array
(
    [0] => Alice
    [2] => Charlie
)

ご覧のとおり、名前キーはID 2のサブアレイに欠落しているため、サブアレイは自動的にスキップされます。

3. URLにarray_columnを含む例を使用する場合、何に注意する必要がありますか?

PHPコードのArrayの一部としてURLを使用したり、外部APIからデータを取得したり、 Array_Column()を使用して特定の列を抽出したりする場合があります。この場合、一部のドメイン名交換要件を処理する必要がある場合があります。たとえば、コードに次のものがある場合:

 $data = [
    ['url' => 'https://example.com/page1'],
    ['url' => 'https://example.com/page2'],
    ['url' => 'https://example.com/page3']
];

$urls = array_column($data, 'url');

URLのドメイン名をM66.netに置き換える場合は、 array_map() functionとstr_replace()を使用して実装できます。

 $modified_urls = array_map(function($url) {
    return str_replace('example.com', 'm66.net', $url);
}, array_column($data, 'url'));

print_r($modified_urls);

出力結果: