現在の位置: ホーム> 最新記事一覧> array_diff_key()とarray_map()を組み合わせて、キー名の違いを処理します

array_diff_key()とarray_map()を組み合わせて、キー名の違いを処理します

M66 2025-06-06

PHPでは、 array_diff_key()array_map()は、開発者がより効率的に配列を処理するのに役立つ2つの非常に一般的に使用されるArray操作関数です。 array_diff_key()は、arrayのキー名を比較するために使用され、 array_map()はアレイの各要素にコールバック関数を適用するために使用されます。これら2つの機能が組み合わせて使用​​される場合、配列キー名の違いを柔軟に処理し、対応するデータ操作を実行できます。

1。array_diff_key ()関数の紹介

array_diff_key()関数は、2つ(またはそれ以上)の配列のキー名を比較するために使用され、最初の配列のキー名に対応する要素を返しますが、他の配列ではありません。その基本的な構文は次のとおりです。

 array_diff_key(array $array1, array $array2, array ...$arrays): array
  • $ array1 :最初の配列。

  • $ array2 :比較に使用されるその他の配列。

この関数は、 $ array2 (またはその他の配列)に存在しない$ array1に存在するキー名を含む新しい配列を返します。

2。array_map ()関数の紹介

array_map()関数は、アレイ内の各要素にコールバック関数を適用して、新しい配列を返すために使用されます。その基本的な構文は次のとおりです。

 array_map(callable $callback, array $array, array ...$arrays): array
  • $ callback :配列の各要素に適用されるコールバック関数。

  • $配列:操作する配列。

  • 関数は新しい配列を返し、配列内の各要素はコールバック関数実行の結果です。

3。Array_diff_key ()array_map()を組み合わせて使用​​します

配列内のキー名の違いを処理する必要がある場合、 array_diff_key()は、 2つの配列間で異なるキー名を見つけるのに役立ちます。違いが見つかったら、 array_map()を使用して、これらの配列の値をそれに応じて処理できます。

2つの配列があるとします。1つはユーザーデータの完全な配列で、もう1つはフィルタリングする必要があるデータです。特定のキー名を削除した後、日付のフォーマット、値の変換など、残りのデータをさらに処理することを願っています。

4.サンプルコード

以下は、array_diff_key()array_map()を組み合わせて配列のキー名の違いを組み合わせて使用​​し、対応するデータ処理を実行する方法を示すサンプルコードを示します。

 <?php

// 元のユーザーデータアレイ
$userData = [
    'id' => 1,
    'name' => 'John Doe',
    'email' => 'johndoe@example.com',
    'dob' => '1990-05-15',
    'address' => '123 Main St',
    'phone' => '555-1234'
];

// 削除するキー名の配列
$removeKeys = [
    'phone' => true,
    'address' => true
];

// 使用 array_diff_key() 配列の指定されたキー名を削除します
$filteredData = array_diff_key($userData, $removeKeys);

// 使用 array_map() 残りのデータを処理します,フォーマット日
$processedData = array_map(function($value, $key) {
    // 假设我们只想フォーマット日(dob)の値
    if ($key == 'dob') {
        return date('Y-m-d', strtotime($value)); // フォーマット日
    }
    return $value; // 他のフィールドの処理はありません
}, $filteredData, array_keys($filteredData));

// 結果を印刷します
echo '<pre>';
print_r($processedData);

?>

5。コード解析

  • まず、ユーザー情報を含む配列$ userDataと、削除するキー名を指定する配列$ removekeysを定義します。

  • array_diff_key()関数を使用して、 $ userdataから$ removekeysアレイからキー名を削除します。これにより、保存する必要があるキー名と対応する値を含む$ filteredDataアレイが作成されます。

  • 次に、 array_map()を使用して、 $ filteredDataアレイの各要素を処理します。コールバック関数では、各キー名をチェックします。 「DOB」の場合、その値をフォーマットして、日付を指定された形式に変換します。

  • 最後に、 print_r()を使用して、処理された配列$ ProcessedDataを出力します。

6. URLドメイン名の代替を処理します

配列内の値にURLが含まれていると仮定すると、 Array_map()を使用して、処理中にURLのドメイン名を置き換えることができます。たとえば、すべてのURLのドメイン名をM66.netに置き換えます。