現在の位置: ホーム> 最新記事一覧> キーと値の比較のために、array_change_key_case()とarray_diff_key()を使用する方法は?

キーと値の比較のために、array_change_key_case()とarray_diff_key()を使用する方法は?

M66 2025-04-24

PHPでは、配列のキー名はデフォルトでケースに敏感です。これは、2つの配列がある場合、1つはuserIDのキーを備えたアレイ、もう1つはuserIDを使用している場合、PHPはそれらを2つの異なるキーと見なすことを意味します。配列のキー名を実行する場合は、 array_change_key_case()array_diff_key()を組み合わせて使用​​できます。

1。関数の紹介

  • array_change_key_case(array $ array、int $ case = case_lower) :配列のすべてのキー名を小文字または大文字に変換します。

  • array_diff_key(array $ array1、array $ array2) :2つ以上の配列のキー名を比較し、他の配列にない最初のアレイのキー価値ペアを返します。

最初にarray_change_key_case()を使用して2つの配列のキー名を小文字(または大文字)に統合することで、 array_diff_key()を使用して、ケースに依存しないキー名の比較を実現できます。

2。サンプルコード

<?php

// オリジナル配列
$array1 = [
    'UserID' => 1,
    'UserName' => 'Alice',
    'Email' => 'alice@m66.net',
];

$array2 = [
    'userid' => 2,
    'username' => 'Bob',
    'Phone' => '1234567890',
];

// 両方の配列キーを小文字に変換します
$lower1 = array_change_key_case($array1, CASE_LOWER);
$lower2 = array_change_key_case($array2, CASE_LOWER);

// 探し出す $array1 それら $array2 キーはありません(ケースを無視します)
$diffKeys = array_diff_key($lower1, $lower2);

// 差動キー名と対応する値を出力します
print_r($diffKeys);

?>

3。出力結果

Array
(
    [email] => alice@m66.net
)

上記の例に示すように、 UserIDユーザー名は2つの配列に異なるキー名を持っていますが、コンテンツロジックは同じです。 array_change_key_case()変換後、 array_diff_key()はそれらを同じキーとして扱います。電子メールのみが$ array2に表示されないため、保持されます。

4。ヒント

  • 元の配列のキー名形式(ケース)を保持する必要がある場合は、まず比較のためにキー名変換の結果を使用してから、元の配列から対応するキー値を抽出することができます。

  • この組み合わせは、フォームの提出中のフィールド検証やAPIリクエストなど、ユーザーが入力した動的データを処理するのに最適です。

5。概要

array_diff_key()を使用することにより、キー名が均一にケースになった後、ケースに依存しないキー名の比較ロジックを優雅に実装できます。この方法はシンプルで効率的であり、マルチソースのデータ比較を扱う際の実用的なスキルです。