現在の位置: ホーム> 最新記事一覧> array_change_key_case()の効果array_filter()の前後に使用されます

array_change_key_case()の効果array_filter()の前後に使用されます

M66 2025-04-24

ArrayをPHPで処理する場合、2つの非常に実用的な関数がよく使用されます: array_change_key_case()array_filter() 。これらの2つの関数は合計に使用されます。多くの開発者は、これら2つの機能を使用する際に尋ねることができます。これら2つの関数の呼び出し順序は重要ですか?最終処理結果に影響しますか?

この記事では、分析と例を通じてこの質問に答えます。

1つ、2つの関数の紹介

1。array_change_key_case ()

この関数は、配列のキー名をすべての小文字またはすべての大文字に変換するために使用され、次のように使用されます。

 array_change_key_case(array $array, int $case = CASE_LOWER): array
  • $ caseはcase_lower (デフォルト)またはcase_upperにすることができます。

例:

 $arr = ['Name' => 'Tom', 'Age' => 25];
print_r(array_change_key_case($arr, CASE_LOWER));
// 出力:Array ( [name] => Tom [age] => 25 )

2。ARRAY_FILTER ()

この関数は、配列内の要素をフィルタリングするために使用され、コールバック関数をカスタマイズして、どの要素を保持するかを決定できます。

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array

デフォルトでは、 falsenull0 、空の文字列などの「false値」で要素を削除します。

例:

 $arr = ['name' => 'Tom', 'age' => 0, 'email' => ''];
print_r(array_filter($arr));
// 出力:Array ( [name] => Tom )

2。異なる注文、結果は異なりますか?

はい、順序は、あなたが扱っている特定の配列構造と目的に応じて、結果に影響を与える可能性があります

ケース1: array_change_key_case()はarray_filter()後に呼び出されます

この場合、キーケースが最初に変換され、次に値がフィルタリングされます。

 $data = ['Name' => 'Tom', 'Age' => null, 'EMAIL' => ''];
$result = array_filter(array_change_key_case($data));
print_r($result);

出力:

 Array ( [name] => Tom )

説明:

  • キーはすべて小文字です:名前年齢電子メール

  • ヌルと空の文字列が削除されます

ケース2: array_filter()の後、 array_change_key_case()が呼び出されます

$data = ['Name' => 'Tom', 'Age' => null, 'EMAIL' => ''];
$result = array_change_key_case(array_filter($data));
print_r($result);

出力:

 Array ( [name] => Tom )

出力は同じように見えますが、コールバック関数でarray_filter()を使用すると、違いが発生する可能性があります。

より複雑な例:

 $data = ['Name' => 'Tom', 'Age' => 0, 'EMAIL' => 'tom@m66.net'];

$result1 = array_filter(array_change_key_case($data), function($val) {
    return !empty($val);
});

$result2 = array_change_key_case(array_filter($data, function($val) {
    return !empty($val);
}));

print_r($result1);
print_r($result2);

出力:

 $result1:
Array ( [name] => Tom [email] => tom@m66.net )

$result2:
Array ( [name] => Tom [email] => tom@m66.net )

現時点では結果はまだ同じですが、キー名の上限と小文字に基づいてさらに論理的な処理を行う必要がある場合、順序は判断の論理に影響を与える可能性があります。

3.実際の開発で順序を選択する方法は?

ニーズに基づいて判断することをお勧めします。

  • キーの形式を均一に処理したい場合(すべての小文字を変換してケースの混乱を避けるなど)、 array_change_key_case()を最初に使用できます。

  • 配列値のフィルタリングロジックにもっと注意を払い、キー名の形式を気にしない場合、最初にarray_filter()を使用するかどうかは関係ありません。

  • 両方を使用する必要がある場合、不確実な論理エラーを避けるために、シーケンスの順序を明確に定義することが最善です。