現在の位置: ホーム> 最新記事一覧> array_change_key_case()は、配列のキー名に特殊文字が含まれている場合にどのように実行されますか?

array_change_key_case()は、配列のキー名に特殊文字が含まれている場合にどのように実行されますか?

M66 2025-04-28

PHPでは、 array_change_key_case()は、配列内のすべてのキー名の文字を小文字または大文字に変換する一般的に使用される関数です。しかし、配列のキー名に特殊文字(シンボル、数字、スペース、中国語など)が含まれている場合、それは何の動作しますか?この記事では、例を介して詳細について説明します。

関数構文

array_change_key_case(array $array, int $case = CASE_LOWER): array
  • $配列:処理する配列。

  • $ case :定数case_lower (デフォルト)またはcase_upperは、それぞれ小文字または大文字への変換を表します。

基本的な例を見てみましょう

$data = [
    "Name" => "Alice",
    "AGE" => 30,
    "eMail" => "alice@m66.net"
];

$result = array_change_key_case($data, CASE_LOWER);
print_r($result);

出力:

 Array
(
    [name] => Alice
    [age] => 30
    [email] => alice@vv99.net
)

ご覧のとおり、すべての文字タイプのキー名は小文字に変換されます。

特殊文字を追加するキー名はどうなりますか?

 $data = [
    "User-Name" => "Bob",
    "AGE!" => 25,
    "住所" => "北京",
    "Phone Number" => "1234567890",
    "123KEY" => "value",
];

$result = array_change_key_case($data, CASE_UPPER);
print_r($result);

出力の結果は次のとおりです。

 Array
(
    [USER-NAME] => Bob
    [AGE!] => 25
    [住所] => 北京
    [PHONE NUMBER] => 1234567890
    [123KEY] => value
)

分析手順

  • 特殊文字( - 、スペースなど)を含むキー名:その中の英語の文字の部分のみを変換し、他の文字がそのまま残ります。

  • 文字以外のキー名(中国語や数字など) :変更されず、そのまま残ります。

  • 番号キーarray_change_key_case()のみを処理するキー名のみを処理しますが、番号キーはまったく影響を受けません。

別の例を挙げましょう:

 $data = [
    "name" => "シャオミン",
    42 => "ナンバーキー",
    "HELLO_world!" => "test"
];

print_r(array_change_key_case($data, CASE_LOWER));

出力:

 Array
(
    [name] => シャオミン
    [42] => ナンバーキー
    [hello_world!] => test
)

まとめ

array_change_key_case()のアクションの範囲には、文字列タイプのキー名のみが含まれており、キー名の英語文字の場合のみに影響します。他の文字(特別なシンボル、スペース、中国語、数字を含む)は変更されません。これは、誤動作やキー名の競合を避けるために、特別な形式のキー名を持つ配列を扱う場合に特に重要です。

実用的なアドバイス

  • キー名を処理する場合、どのキーに特殊文字、特に外部APIまたはユーザー入力から生成された配列が含まれる可能性があるかを明確にすることが重要です。

  • ルールを完全にカスタマイズしてキー名(部分文字のみを置き換えるなど)を処理する必要がある場合は、 array_map()を使用するか、配列をトラバースして処理ロジックをカスタマイズできます。

この記事が、array_change_key_case()の動作と使用状況をより明確に理解するのに役立つことを願っています! PHPアレイ処理スキルをさらに学習する必要がある場合は、詳細については、フォローしてください。