PHPで2つの連想配列の異なる部分を取得する方法

PHPz
リリース: 2023-03-23 15:46:01
オリジナル
1313 人が閲覧しました

PHP 開発では、2 つの連想配列を比較し、それらの異なる部分を取得する必要があることがよくあります。以下では、この機能を実現するいくつかの方法を紹介します。

方法 1: array_diff_assoc() 関数を使用する

array_diff_assoc() 関数を使用すると、2 つの連想配列のキーと値のペアを比較し、値を返すことができます。最初の配列内のすべての要素 (他の配列は含まない) であり、キー名とキー値は保持されます。

コード例:

$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_diff_assoc($array1, $array2);  
print_r($result);
ログイン後にコピー

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

Array
(
    [name] => 张三
    [salary] => 3000
)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、結果配列には配列内の「name」と「salary」という名前のキーのみが含まれています。 1 の値ペアは配列 2 に現れないためです。

方法 2: カスタム関数を使用する

もう 1 つの実装方法は、2 つの配列をループしてキーと値のペアを比較するカスタム関数です。結果の配列。

コード例:

function array_diff_custom($array1, $array2) {  
    $result = array();  
    foreach ($array1 as $key => $value) {  
        if (!array_key_exists($key, $array2) || ($array2[$key] != $value)) {  
            $result[$key] = $value;  
        }  
    }  
    return $result;  
}  
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_diff_custom($array1, $array2);  
print_r($result);
ログイン後にコピー

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

Array
(
    [name] => 张三
    [salary] => 3000
)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

同様に、結果の配列には、キー名「name」と「salary」を持つキーと値のペアのみが含まれます。 " 配列 1 にあります。

方法 3: array_udiff_assoc() 関数を使用する

array_udiff_assoc() 関数は array_diff_assoc() 関数に似ていますが、ユーザー定義のコールバックを使用できます。キーと値のペアを比較する関数。

コード例:

function compareByKeyValue($a, $b) {  
    if ($a === $b) {  
        return 0;  
    }  
    return ($a > $b) ? 1 : -1;  
}  
$array1 = array("name"=>"张三", "age"=>22, "salary"=>3000);  
$array2 = array("name"=>"李四", "age"=>22, "salary"=>4000);  
$result = array_udiff_assoc($array1, $array2, "compareByKeyValue");  
print_r($result);
ログイン後にコピー

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

Array
(
    [name] => 张三
    [salary] => 3000
)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

キーと値のペアが同じかどうかを比較するコールバック関数compareByKeyValue()を定義します。この関数の名前を array_udiff_assoc() 関数の 3 番目の引数として渡すことで、array_diff_assoc() 関数と同様の効果を実現できます。

概要

この記事では、PHP で 2 つの連想配列の異なる部分を取得する 3 つの方法、つまり array_diff_assoc() 関数、カスタム関数、および array_udiff_assoc () 関数を使用する方法を紹介します。どの方法を選択するかは、特定のニーズと個人の習慣によって異なります。いずれの方法でも、連想配列を使用する際の効率と精度を向上させることができます。

以上がPHPで2つの連想配列の異なる部分を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート