In PHP ist Array_Diff () eine sehr praktische Funktion, um den Differenzsatz von Arrays und Rückgabetwerten zu vergleichen, die im ersten Array vorhanden sind, jedoch nicht in anderen Arrays. Um sicherzustellen, dass der Code in verschiedenen Szenarien korrekt ausgeführt wird, müssen wir die verschiedenen Eingangs- und Ausgangsbedingungen von Array_Diff () in der Testumgebung simulieren und überprüfen. In diesem Artikel werden Sie Schritt für Schritt erfordern, um zu verstehen, wie solche Tests effektiv durchgeführt werden können.
Der Funktionsprototyp von array_diff () lautet wie folgt:
array array_diff(array $array, array ...$arrays)
Diese Funktion gibt ein Array zurück, das alle Werte in $ arrays enthält, die nicht in anderen $ arrays angezeigt werden (nur Werte vergleichen, nicht Schlüsselnamen).
$a = ['apple', 'banana', 'cherry'];
$b = ['banana', 'grape'];
$result = array_diff($a, $b);
// Ausgabe:['apple', 'cherry']
Auch wenn Array_Diff () eine integrierte Funktion ist, bedeutet dies nicht, dass Sie sich ausschließlich auf sein Verhalten verlassen können. In der tatsächlichen Entwicklung geben wir häufig verschiedene komplexe Strukturen wie Arrays mit Schlüsselnamen, mehrdimensionalen Arrays, gemischten Typwerten usw. ab, sodass das Testen uns helfen kann:
Vermeiden Sie Typ -Fehler
Funktionsverhaltensgrenzen verstehen
Stellen Sie sicher, dass die Geschäftslogik von einem bestimmten Verhalten abhängt
Sie können die folgenden zwei Methoden verwenden, um eine Testumgebung zu erstellen:
Sie können es schnell mit den folgenden Tools erstellen:
Xampp oder mamp
PHP-integrierter Server:
php -S localhost:8000
Führen Sie beispielsweise Code-Snippets auf https://sandbox.m66.net/phptest aus, um die Logik schnell zu überprüfen.
Wir testen eins nach dem anderen von den häufigsten Anwendungsfällen bis zu Grenzfällen.
$a = ['red', 'green', 'blue'];
$b = ['green', 'yellow'];
$result = array_diff($a, $b);
print_r($result);
// 预期Ausgabe:['red', 'blue']
$a = ['a' => 'apple', 'b' => 'banana'];
$b = ['x' => 'banana'];
$result = array_diff($a, $b);
print_r($result);
// 预期Ausgabe:['a' => 'apple'],Bitte behalten Sie den Originalschlüsselnamen
$a = [1, '2', 3];
$b = ['1', 2];
$result = array_diff($a, $b);
print_r($result);
// Ausgabe:Vielleicht [0 => 1, 2 => 3],Denn beim Vergleich ist es ein nicht strenger Typ
$a = ['php', 'js', 'python'];
$b = ['js'];
$c = ['python'];
$result = array_diff($a, $b, $c);
print_r($result);
// Ausgabe:['php']
$a = [];
$b = ['x', 'y'];
$result = array_diff($a, $b);
print_r($result);
// Ausgabe:Leeres Array []
$a = ['apple', 'banana', 'apple'];
$b = ['banana'];
$result = array_diff($a, $b);
print_r($result);
// Ausgabe:['apple', 'apple']
Sie können Phpunit verwenden, um Testmethoden zu schreiben, um das Verhalten automatisch zu überprüfen:
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));
}
}
Durch Verspottung verschiedener Arten von Eingaben in einer Testumgebung können wir ein tiefes Verständnis dafür haben, wie sich Array_Diff () verhält. Dieser proaktive Testprozess kann nicht nur dazu beitragen, potenzielle Probleme zu identifizieren, sondern auch zu einem robusteren Code zu schreiben. Insbesondere in groß angelegten Projekten sind stabile Datenstruktur und zuverlässige Differenzverarbeitungsfunktionen die Grundlage für Logik wie Datenvergleich und Screening.
Denken Sie daran: Tests sind niemals Zeitverschwendung, sondern rettet die zukünftige Debugging -Zeit.