我有一個數組數組,每個數組都包含醫療設備掃描的詳細信息。我從夜間傾倒的文本日誌中獲取這些數據。它的格式是這樣的: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 2009-06-02 18:15:50