php에서 array_diff ()는 첫 번째 배열에 존재하지만 다른 배열에는 존재하지 않는 배열의 차이 세트와 반환 값을 비교하는 매우 실용적인 기능입니다. 다양한 시나리오에서 코드가 올바르게 수행되도록하려면 테스트 환경에서 Array_Diff () 의 다양한 입력 및 출력 조건을 시뮬레이션하고 확인해야합니다. 이 기사를 사용하면 이러한 테스트를 효과적으로 수행하는 방법을 이해하기 위해 단계별로 진행됩니다.
Array_Diff () 의 함수 프로토 타입은 다음과 같습니다.
array array_diff(array $array, array ...$arrays)
이 함수는 다른 $ 배열 에 표시되지 않는 $ 배열 의 모든 값을 포함하는 배열을 반환합니다 (키 이름이 아닌 값 만 비교).
$a = ['apple', 'banana', 'cherry'];
$b = ['banana', 'grape'];
$result = array_diff($a, $b);
// 산출:['apple', 'cherry']
Array_Diff () 가 내장 함수이더라도 동작에 전적으로 의존 할 수 있다는 의미는 아닙니다. 실제 개발에서 우리는 종종 키 이름, 다차원 배열, 혼합 유형 값 등과 같은 다양한 복잡한 구조를 통과하므로 테스트가 도움이 될 수 있습니다.
유형 오류를 피하십시오
기능 동작 경계를 이해합니다
비즈니스 논리가 특정 행동에 의존하는지 확인하십시오
다음 두 가지 방법을 사용하여 테스트 환경을 구축 할 수 있습니다.
다음 도구로 신속하게 구축 할 수 있습니다.
XAMPP 또는 MAMP
PHP 내장 서버 :
php -S localhost:8000
예를 들어, https://sandbox.m66.net/php-test 에서 코드 스 니펫을 실행하여 논리를 신속하게 확인하십시오.
우리는 가장 일반적인 사용 사례에서 경계 사례로 하나씩 테스트합니다.
$a = ['red', 'green', 'blue'];
$b = ['green', 'yellow'];
$result = array_diff($a, $b);
print_r($result);
// 预期산출:['red', 'blue']
$a = ['a' => 'apple', 'b' => 'banana'];
$b = ['x' => 'banana'];
$result = array_diff($a, $b);
print_r($result);
// 预期산출:['a' => 'apple'],원래 키 이름을 유지하십시오
$a = [1, '2', 3];
$b = ['1', 2];
$result = array_diff($a, $b);
print_r($result);
// 산출:아마도 [0 => 1, 2 => 3],비교할 때는 비 스트릭 유형이기 때문입니다
$a = ['php', 'js', 'python'];
$b = ['js'];
$c = ['python'];
$result = array_diff($a, $b, $c);
print_r($result);
// 산출:['php']
$a = [];
$b = ['x', 'y'];
$result = array_diff($a, $b);
print_r($result);
// 산출:빈 배열 []
$a = ['apple', 'banana', 'apple'];
$b = ['banana'];
$result = array_diff($a, $b);
print_r($result);
// 산출:['apple', 'apple']
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));
}
}
테스트 환경에서 다양한 유형의 입력을 조롱함으로써 Array_Diff () 의 동작 방식을 깊이 이해할 수 있습니다. 이 사전 예방 적 테스트 프로세스는 잠재적 인 문제를 식별하는 데 도움이 될뿐만 아니라보다 강력한 코드를 작성하는 데 도움이 될 수 있습니다. 특히 대규모 프로젝트에서 안정적인 데이터 구조 및 신뢰할 수있는 차동 처리 기능이 데이터 비교 및 스크리닝과 같은 논리의 기초입니다.
기억하십시오 : 테스트는 시간 낭비가 아니지만 향후 디버깅 시간을 절약합니다.