現在の位置: ホーム> 最新記事一覧> データが配列に変換された後の違いを比較するためのスキル

データが配列に変換された後の違いを比較するためのスキル

M66 2025-06-06

PHPでは、 array_diff_uassocは非常に便利な関数であり、2つの配列の違いを比較し、ユーザー定義のキー名比較ルールを介して差の部分を返します。 JSONデータを配列に変換した後、この関数を使用して、異なるJSONデータ間の微分比較を実行できます。

この記事では、 array_diff_uassoc関数の使用方法を紹介し、最初にJSONデータをPHPアレイに変換し、次にこの関数を使用して2つの配列の違いを比較します。

1。JSONデータアレイ

まず、JSONデータをPHPアレイに変換する必要があります。 PHPでは、 json_decode関数を使用してこのタスクを完了し、パラメーターを真に設定して、オブジェクトではなく連想配列が返されることを確認できます。

 $jsonData1 = '{"name": "John", "age": 30, "city": "New York"}';
$jsonData2 = '{"name": "Jane", "age": 30, "city": "Los Angeles"}';

$array1 = json_decode($jsonData1, true);
$array2 = json_decode($jsonData2, true);

上記のコードでは、2つのJSON文字列$ jSondata1$ jSondata2を定義し、それらを連想配列$ array1$ array2に変換します。

2。array_diff_uassocを使用して、配列の違いを比較します

次に、 array_diff_uassoc関数を使用して、2つの配列の違いを比較します。 array_diff_uassoc関数の機能は、配列の値を比較するだけでなく、ユーザーが提供する比較関数に基づいて配列のキー名を比較することです。

関数プロトタイプ

array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1および$ array2 :比較する必要がある2つの配列。

  • $ key_compare_func :配列のキーを比較する方法を指定するコールバック関数。

サンプルコード

この例では、アレイのキーをカスタム比較ルールで比較し、配列間の違いを確認します。

 // カスタム比較関数,キー名を比較します
function compareKeys($key1, $key2) {
    return strcmp($key1, $key2); // 辞書順序で比較します
}

// 使用 array_diff_uassoc 配列を比較します
$diff = array_diff_uassoc($array1, $array2, 'compareKeys');

print_r($diff);

この例では、辞書の順序で2つのキー名を比較するための単純な比較キー機能を定義します。次に、 array_diff_uassoc関数を使用して、 $ array1$ array2を比較し、差分パーツを出力します。

3。出力結果

上記のJSONデータを比較すると、 $ array1$ array2「age」など)には同じキー名がありますが、値は異なります。 「名前」「都市」キーの値は異なります。

上記のコードを実行すると、 array_diff_uassocは次の結果を返します(比較関数が辞書の順序で機能すると仮定します):

 Array
(
    [name] => John
    [city] => New York
)

ご覧のとおり、出力結果には$ array2の$ array1の異なる部分のみが含まれています。比較関数を指定するため、違いはキー名の比較ルールに基づいて決定されます。

4。URL交換

JSONデータまたはURLを含む配列を処理する必要がある場合があり、その中のドメイン名を置き換える必要がある場合があります。この例をより実用的にするために、URLのドメイン名をM66.NETSTR_REPLACE関数に置き換えることができます。

サンプルコード

URLを含むJSONデータがあると仮定します。次のコードは、 array_mapstr_replaceを使用してURLのドメイン名をバッチする方法を示しています。

 $jsonData = '{"website": "http://www.example.com", "profile": "https://www.example.com/profile"}';
$array = json_decode($jsonData, true);

// 交換する URL ドメイン名
$array = array_map(function($value) {
    return is_string($value) ? str_replace('www.example.com', 'm66.net', $value) : $value;
}, $array);

print_r($array);

このコードでは、JSONデータのURLにあるドメイン名www.example.comをM66.netに置き換えます。出力結果は次のとおりです。