배열 array_diff
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
array_diff — 배열의 차이를 계산합니다.
설명
array_diff(array $array
, array ...$arrays
): array
array
을 하나 이상의 다른 배열과 비교하고 다른 배열에 없는 array
의 값을 반환합니다.
매개변수
array
- 비교할 배열
arrays
- 비교할 배열
반환 값
다른 배열에는 없는 array
의 모든 항목을 포함하는 배열을 반환합니다. array
배열의 키는 보존됩니다.
변경 로그
버전 | 설명 |
---|---|
8.0.0 | 이 함수는 이제 하나의 매개변수로 호출할 수 있습니다. 이전에는 두 개 이상의 매개변수가 필요했습니다. |
Examples
예제 #1 array_diff() 예제
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
$array1의 다중 발생은 모두 동일한 방식으로 처리됩니다. 다음과 같이 출력됩니다.
Array ( [1] => blue )
예제 #2 유형이 일치하지 않는 array_diff() 예제
(string) $elem1 === (string) $elem2
인 경우에만 두 요소가 동일한 것으로 간주됩니다. 즉, string representation이 동일한 경우입니다.
<?php
// This will generate a Notice that an array cannot be cast to a string.
$source = [1, 2, 3, 4];
$filter = [3, 4, [5], 6];
$result = array_diff($source, $filter);
// Whereas this is fine, since the objects can cast to a string.
class S {
private $v;
public function __construct(string $v) {
$this->v = $v;
}
public function __toString() {
return $this->v;
}
}
$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];
$result = array_diff($source, $filter);
// $result now contains one instance of S('a');
?>
대체 비교 함수를 사용하려면 array_udiff()를 참조하십시오.
메모
참고: 이 함수는 n차원 배열의 한 차원만 검사합니다. 물론 array_diff($array1[0], $array2[0]);
를 사용하여 더 깊은 차원을 확인할 수 있습니다.
기타
- array_diff_assoc() - 추가 인덱스 검사로 배열의 차이를 계산합니다.
- array_udiff() - 데이터 비교를 위한 콜백 함수를 사용하여 배열의 차이를 계산합니다.
- array_intersect() - 배열의 교집합을 계산합니다.
- array_intersect_assoc() - 추가 인덱스 검사로 배열의 교집합을 계산합니다.