단순 배열에서 값과 일치하는 배열 행 찾기
이 시나리오에서는 여러 열이 있는 $arr1 배열이 있고 ID 값 세트를 포함하는 두 번째 배열 $arr2. 목표는 $arr1을 필터링하고 $arr2에 있는 ID 값을 포함하는 행만 반환하는 것입니다.
이 문제에 대한 효율적인 해결책은 두 배열의 정렬된 교차를 수행하는 array_uintersect() 함수를 활용하는 것입니다. 사용자 정의 콜백 함수를 사용합니다. 이 함수는 두 입력 배열의 요소 쌍에 대해 작동하고 비교 결과에 따라 -1, 0 또는 1을 반환합니다.
사용자 정의 콜백:
사용자 정의 array_uintersect() 내에서 정의한 콜백 함수는 $arr1(있는 경우)의 ID 열 또는 열이 정의되지 않은 경우 전체 요소 자체를 $arr2의 값과 비교합니다.
<code class="php">fn($a, $b) => ($a['id'] ?? $a) <=> ($b['id'] ?? $b)</code>
삼항 사용 연산자를 사용하여 열이 존재하면 $a에 $a['id']를 할당하고 그렇지 않으면 $a 자체를 할당합니다. 마찬가지로 $b에 대해서도 동일한 작업을 수행합니다. 이를 통해 ID 열이 모든 행에 존재하지 않는 경우를 처리할 수 있습니다.
정렬 및 효율성:
Array_uintersect()는 정렬을 활용하여 요소를 효율적으로 비교합니다. 기본적으로 두 입력 배열을 모두 숫자로 정렬합니다. 귀하의 경우 숫자일 가능성이 있는 ID 값을 비교하므로 이 정렬을 통해 실행 시간이 향상됩니다.
사용 예:
이 솔루션의 작동 방식을 보여주기 위해, 이를 제공된 배열에 적용할 수 있습니다.
<code class="php">$arr1 = [ ['key' => 0, 'id' => 14, 'name' => 'bob', 'style' => 'big', 'age' => 33, 'whim' => 'no'], // ... (other rows from $arr1) ]; $arr2 = [14, 72, 8790]; $resultingArray = array_uintersect($arr1, $arr2, $customCallback);</code>
$resultingArray에는 ID 값이 $arr2의 값과 일치하는 $arr1의 행이 포함됩니다.
위 내용은 평면 배열의 값을 일치시켜 배열 행을 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!