現在の位置: ホーム> 最新記事一覧> array_flip()のオーバーライドをテストするために価値の重複をシミュレートする方法

array_flip()のオーバーライドをテストするために価値の重複をシミュレートする方法

M66 2025-06-03

array_flip()はPHPの関数であり、その関数は配列のキーと値を交換することです。つまり、配列内の値がキーになり、元のキーが値になります。ただし、この関数は、特に配列に重複した値がある場合、場合によってはカバレッジの問題が発生する場合があります。この場合、後のキーは前のキーを上書きします。この記事では、繰り返し値の場合をシミュレートすることにより、 array_flip()関数のオーバーライドをテストします。

array_flip()関数の基本的な使用

まず、 array_flip()関数の使用法を簡単に確認しましょう。この関数は、配列を引数として取得し、配列のキーと値が交換可能な新しい配列を返します。配列の値が一意の場合、各キーは保存されます。

 <?php
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$flipped = array_flip($array);
print_r($flipped);
?>

出力は次のとおりです。

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

値の重複の場合

問題は、配列に重複値が含まれている場合に発生します。 Array_flip()に同じ値でキーを渡すと、その後のキーが前のキーを上書きします。例を見てみましょう:

 <?php
$array = ['a' => 1, 'b' => 2, 'c' => 2];
$flipped = array_flip($array);
print_r($flipped);
?>

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

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

ご覧のとおり、キーBCの両方の値は2ですが、 Array_Flip()が実行された後、キーCは​​同じ値を持つためキーBを置き換えます。 array_flip()は、表示される最後のキーのみを保持します。このオーバーライドの問題は、通常、 array_flip()を使用する場合に注意する必要があるものです。

カバレッジの問題をテストするために価値の重複をシミュレートする方法

この問題をよりよく理解するために、いくつかのテストケースを作成し、さまざまなシナリオで複製値をシミュレートし、 array_flip()の動作を観察できます。一般的なテストシナリオを次に示します。

シナリオ1:配列に複数の同一の値があります

<?php
$array = ['a' => 1, 'b' => 1, 'c' => 2, 'd' => 2];
$flipped = array_flip($array);
print_r($flipped);
?>

出力は次のとおりです。

 Array
(
    [1] => b
    [2] => d
)

この例では、値12がそれぞれ2回表示され、最後のキー( BD )が前のキーをオーバーライドします。

シナリオ2:配列の値はまったく同じです

<?php
$array = ['a' => 1, 'b' => 1, 'c' => 1];
$flipped = array_flip($array);
print_r($flipped);
?>

出力は次のとおりです。

 Array
(
    [1] => c
)

この場合、すべてのキーの値は1であるため、最後のキーCのみが保持されます。

シナリオ3:より複雑な配列構造

<?php
$array = ['a' => 1, 'b' => 2, 'c' => 2, 'd' => 3, 'e' => 1];
$flipped = array_flip($array);
print_r($flipped);
?>

出力は次のとおりです。

 Array
(
    [1] => e
    [2] => c
    [3] => d
)

ここで見ることができるように、値12はそれぞれ2回表示され、 ECは以前のキーを上書きします。 3は発生する唯一の値であるため、 Dは保存されます。

要約します

異なる繰り返し値をシミュレートすることにより、繰り返し値を処理するときにarray_flip()関数の動作を見ることができます。関数は前のキーをオーバーライドし、キーの最後の発生を保持します。このオーバーライドの動作は、予期しない結果につながる可能性があるため、特にアレイに重複した値がある場合、 array_flip()を使用する場合は特に注意する必要があります。