現在の位置: ホーム> 最新記事一覧> array_diff_key()は、元の配列のキーオーダーを保持しますか?

array_diff_key()は、元の配列のキーオーダーを保持しますか?

M66 2025-06-06

PHPでは、 array_diff_key()は、2つ以上の配列を比較するために使用できる非常に便利な関数であり、最初の配列にすべてのキー値ペアを含む新しい配列を返し、これらのキーは他の配列には存在しません。これにより、キーで配列から要素を削除できます。次に、質問を検討します。Array_diff_key ()を使用する場合、元の配列の重要な順序は保存されますか?

1。array_diff_key ()の基本的な使用

まず、 array_diff_key()の基本的な使用法を確認しましょう。

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
    'd' => 4
];

$array2 = [
    'b' => 5,
    'd' => 6
];

$result = array_diff_key($array1, $array2);

print_r($result);
?>

出力:

 Array
(
    [a] => 1
    [c] => 3
)

この例では、 array_diff_key()は、キーがarray2に表示されない場合、2つのarray array1array2を比較し、 array1のキー値ペアを含む配列を返します。最終出力は新しいArrayであり、 Array2に表示されないArray1のキーのみが保持されます。

2。元の配列のキーオーダー

それで、問題は、 array_diff_key()が元の配列の重要な順序を保持しているのですか?答えは次のとおりです。はいArray_diff_key()を使用すると、PHPは元の配列にキーの順序を保持します。

次のコードでこれを確認しましょう。

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
    'd' => 4
];

$array2 = [
    'b' => 5,
    'd' => 6
];

$result = array_diff_key($array1, $array2);

echo "<pre>";
print_r($result);
echo "</pre>";
?>

出力:

 Array
(
    [a] => 1
    [c] => 3
)

array_diff_key()によって返された新しい配列は、 aおよびcキーの順序を保持していることに注意してください。これらのキーがarray2で比較されていても、 array1のキー順序は影響を受けません。このようにして、 array_diff_key()が配列を並べ替えるのではなく、元の配列のキー順序で保持されていることを確認できます。

3.なぜ注文が保存されているのですか?

これは、PHPでは、アレイの順序(連想配列用)が挿入順序によって決定されるためです。 array_diff_key()が実行されると、phpはキーの存在に基づいて比較されますが、これらのキーの順序は変更されません。 Array Value操作と比較して、 array_diff_key()は主にキーを扱うため、キーオーダーを維持することはPHPの設計動作です。

4。結論

要約すると、 array_diff_key()は、元の配列のキーオーダーを保持します。配列の比較方法に関係なく、元の配列のキー順序が結果に保存されているため、 Array_diff_key()に依存して要素を正確に削除し、データの順序を保持できます。

この記事が、PHPでのarray_diff_key()関数の動作をよりよく理解できることを願っています!さらに質問がある場合は、お気軽にお問い合わせください。