現在の位置: ホーム> 最新記事一覧> テスト環境のさまざまな入力および出力状況でarray_diff()をシミュレートする

テスト環境のさまざまな入力および出力状況でarray_diff()をシミュレートする

M66 2025-06-06

PHPでは、 array_diff()は、最初の配列に存在するが他の配列には存在するアレイと戻り値の差を比較するための非常に実用的な関数です。さまざまなシナリオでコードが正しく実行されるようにするために、テスト環境でarray_diff()のさまざまな入力条件と出力条件をシミュレートして検証する必要があります。この記事では、そのようなテストを効果的に実行する方法を理解するために段階的に説明します。

1。関数の紹介

array_diff()の関数プロトタイプは次のとおりです。

 array array_diff(array $array, array ...$arrays)

この関数は、他の$配列には表示されない$配列のすべての値を含む配列を返します(キー名ではなく、値のみを比較します)。

例:

 $a = ['apple', 'banana', 'cherry'];
$b = ['banana', 'grape'];
$result = array_diff($a, $b);
// 出力:['apple', 'cherry']

2。なぜそれをテストするのですか?

array_diff()が組み込み関数であっても、その動作に完全に頼ることができるという意味ではありません。実際の開発では、キー名、多次元配列、混合タイプの値などのさまざまな複雑な構造に渡ることが多いため、テストは役立ちます。

  • タイプエラーを避けてください

  • 関数の動作の境界を理解します

  • ビジネスロジックは特定の動作に依存していることを確認します

3。テスト環境に備えます

次の2つの方法を使用して、テスト環境を構築できます。

1。ローカル開発環境(php> = 7.4が推奨されます)

次のツールですばやく構築できます。

  • XAMPPまたはMAMP

  • PHPビルトインサーバー:

 php -S localhost:8000

2。オンラインテストプラットフォーム

たとえば、 https://sandbox.m66.net/php-testでコードスニペットを実行して、ロジックをすばやく確認します。

4.複数のテスト状況をシミュレートします

最も一般的なユースケースから境界ケースまで1つずつテストします。

1。単純な文字列比較

$a = ['red', 'green', 'blue'];
$b = ['green', 'yellow'];
$result = array_diff($a, $b);
print_r($result);
// 预期出力:['red', 'blue']

2。配列をキー名と比較します

$a = ['a' => 'apple', 'b' => 'banana'];
$b = ['x' => 'banana'];
$result = array_diff($a, $b);
print_r($result);
// 预期出力:['a' => 'apple'],元のキー名を保管してください

3。文字列との値を混合します

$a = [1, '2', 3];
$b = ['1', 2];
$result = array_diff($a, $b);
print_r($result);
// 出力:多分 [0 => 1, 2 => 3],なぜなら、それを比較するときは、非厳格なタイプだからです

4。複数の配列入力

$a = ['php', 'js', 'python'];
$b = ['js'];
$c = ['python'];
$result = array_diff($a, $b, $c);
print_r($result);
// 出力:['php']

5。空の配列テスト

$a = [];
$b = ['x', 'y'];
$result = array_diff($a, $b);
print_r($result);
// 出力:空の配列 []

6。重複した値を持つ配列

$a = ['apple', 'banana', 'apple'];
$b = ['banana'];
$result = array_diff($a, $b);
print_r($result);
// 出力:['apple', 'apple']

5。自動テストを書き込む(phpunitを使用)

phpunitを使用してテスト方法を作成して、動作を自動的に検証できます。

 use PHPUnit\Framework\TestCase;

class ArrayDiffTest extends TestCase
{
    public function testStringDiff()
    {
        $a = ['a', 'b', 'c'];
        $b = ['b'];
        $this->assertEquals(['a', 'c'], array_values(array_diff($a, $b)));
    }

    public function testMixedTypes()
    {
        $a = [1, '2', 3];
        $b = ['1', 2];
        $expected = [0 => 1, 2 => 3];
        $this->assertEquals($expected, array_diff($a, $b));
    }

    public function testEmptyArray()
    {
        $a = [];
        $b = ['x'];
        $this->assertEmpty(array_diff($a, $b));
    }
}

6。概要

テスト環境でさまざまな種類の入力をock笑することにより、 array_diff()がどのように動作するかを深く理解することができます。このプロアクティブなテストプロセスは、潜在的な問題を特定するのに役立つだけでなく、より堅牢なコードの書き込みにも役立ちます。特に大規模プロジェクトでは、安定したデータ構造と信頼できる差動処理機能が、データの比較やスクリーニングなどのロジックの基礎となります。

覚えておいてください:テストは時間の無駄ではありませんが、将来のデバッグ時間を節約します。