我有一个数组数组,每个数组都包含医疗设备扫描的详细信息。我从每晚转储的文本日志中获取这些数据。其格式是这样的:
$this->scans = array(
array(
'patientid' => (int),
'patientname' => 'John Skeet',
'reviewed' => 0 or 1
//plus more irrelevant
),
array(
//same as above
), //etc
)
这里重要的数组键是reviewed
,因为如果每个扫描质量足够高,则可以对其进行审查。但是,文本日志会转储获取的每个扫描,然后返回并重新列出已查看的扫描。
现在为了防止重复,我想我可以只使用 anarray_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;
}