배열 배열을 가지고 있습니다. 각 배열에는 의료 기기에서 스캔 한 세부 정보가 들어 있습니다. 야간에 덤프되는 텍스트 로그에서이 데이터를 가져옵니다. 의 형식이있다 :array_filter 전체 배열 필터링
$this->scans = array(
array(
'patientid' => (int),
'patientname' => 'John Skeet',
'reviewed' => 0 or 1
//plus more irrelevant
),
array(
//same as above
), //etc
)
이 충분히 높은 품질의 경우, 각각의 스캔이 검토 될 수 있으므로 중요한 키 배열은 여기 reviewed
이다. 그러나 텍스트 로그는 획득 한 모든 검사를 덤프하고 다시 검토 한 다음 검토 된 검사를 다시 나열합니다.
이제 중복을 방지하기 위해 array_filter
을 사용하여 검토 및 검토 된 (검토 된 버전 유지) 스캔을 필터링 할 수 있다고 생각했습니다. 그러나 필터 함수는 일부 드문 경우를 제외하고 전체 배열을 필터링합니다. 누군가가 한 번 봐서 나를 왜 그들이 그것이 일어나고 있다고 생각하는지 알려 주시면 감사하겠습니다.
$this->scans = array_filter($this->scans, array($this, "scan_cleanup"));
.
private function scan_cleanup($scan) {
//only if the scan was not reviewed
if ($scan['reviewed'] == 0) {
//change reviewed status to see if there is a duplicate
$scan['reviewed'] == 1;
//return false to remove this copy (and keep reviewed)
if (in_array($scan, $this->scans)) {
return false;
}
}
return true;
}
그림이 항상 그렇게 단순합니다. 나는 이것을 영원히 디버깅하는 것을 보냈다. 감사. – tj111
내가 추가 한 업데이트는 가독성 측면에서도 많은 도움이 될 것입니다. –