現在の位置: ホーム> 最新記事一覧> array_diff()関数は、元の配列のキー名を保持しますか?それとも再インネックスされますか?

array_diff()関数は、元の配列のキー名を保持しますか?それとも再インネックスされますか?

M66 2025-05-14

PHPの毎日の開発では、 array_diff()関数は、アレイで微分操作を実行するためによく使用されます。 1つの配列に存在するが、他の配列には存在しない値を見つけるのに役立ちます。これは、データフィルタリングや許可制御などのシナリオを処理するのに非常に実用的です。

ただし、見落とされがちな質問は、結果を返すときにarray_diff()が元の配列のキー名を保持しますか?それとも、アレイを自動的に再インデックスしますか?

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

簡単な例を見てみましょう。

 <?php
$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "red"];
$array2 = ["green", "yellow", "red"];

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

print_r($result);
?>

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

 Array
(
    [b] => brown
    [c] => blue
)

ご覧のとおり、結果はarray_diff()によって返されます。文字列キーでさえ再インネックスされていません。

2。array_values ()と比較してください

実際に結果アレイを再インデックスしたい場合は、 array_values()を手動で使用できます。

 $reindexed = array_values(array_diff($array1, $array2));
print_r($reindexed);

出力:

 Array
(
    [0] => brown
    [1] => blue
)

この場合、キー名は0から始まる連続番号インデックスにリセットされます。

3。実際のシーンアプリケーション:ユーザーが送信したタグをフィルタリングします

ユーザーがタグのセットを送信し、システムに既に存在するコンテンツを削除すると仮定します。

 <?php
$userTags = [
    10 => "php",
    11 => "html",
    12 => "custom"
];

$defaultTags = ["php", "html", "css", "javascript"];

$finalTags = array_diff($userTags, $defaultTags);

print_r($finalTags);
?>

出力結果:

 Array
(
    [12] => custom
)

これは、この関数がユーザーの元の配列のキー名を保持していることを示しています。これは、データベースの挿入または更新操作で価値のある情報になる可能性があります。

4。注意すべきこと

  • array_diff()は、キー名に関係なく、のみを比較します。

  • キー名に基づいて比較する場合は、 array_diff_key()を使用できます。

  • キー名と値を同時に比較する場合は、 array_diff_assoc()を使用できます。

5。拡張読み取り