Php 数组\过滤器过滤掉整个数组
我有一个数组,每个数组包含医疗设备扫描的细节。我从每天晚上都会被转储的文本日志中获取这些数据。其格式如下:Php 数组\过滤器过滤掉整个数组,php,arrays,filtering,Php,Arrays,Filtering,我有一个数组,每个数组包含医疗设备扫描的细节。我从每天晚上都会被转储的文本日志中获取这些数据。其格式如下: $this->scans = array( array( 'patientid' => (int), 'patientname' => 'John Skeet', 'reviewed' => 0 or 1 //plus more irrelevant ), array( //same as above )
$this->scans = array(
array(
'patientid' => (int),
'patientname' => 'John Skeet',
'reviewed' => 0 or 1
//plus more irrelevant
),
array(
//same as above
), //etc
)
此处重要的数组键是“已审阅”,因为如果扫描的质量足够高,则可以对其进行审阅。但是,文本日志会转储获取的每个扫描,然后返回并重新列出要查看的扫描
现在为了防止重复,我想我可以使用array\u filter
过滤掉已经获取和审核过的扫描(保留审核过的版本)。但是,filter函数将过滤掉整个数组(除非在某些罕见的情况下)。如果有人可以看一看,让我知道为什么他们认为这是发生的,将不胜感激
$this->scans = array_filter($this->scans, array($this, "scan_cleanup"));
vs
一个是有条件的,在这个上下文中什么都不做,另一个不存在
您也没有经常运行返回false
。我会稍微改变一下逻辑,使它更清晰,通过一点重构(拉出一个条件检查)使它更简单
hasDupe()对重复记录进行最好的检查,并返回true/false
vs
一个是有条件的,在这个上下文中什么都不做,另一个不存在
您也没有经常运行返回false
。我会稍微改变一下逻辑,使它更清晰,通过一点重构(拉出一个条件检查)使它更简单
hasDupe()能最好地检查重复记录,并返回真/假。据我所知,简单的“==”与“=”对比
$scan['reviewed'] = 1;
这就应该奏效了。有时最简单的问题最难发现;-) 就我所见,“==”和“=”的简单对比
$scan['reviewed'] = 1;
这就应该奏效了。有时最简单的问题最难发现;-) 事实上,事情总是那么简单。我一直在调试这个。谢谢。我添加的更新在可读性方面也会有很大帮助。它总是很简单。我一直在调试这个。谢谢。我添加的更新在可读性方面也会有很大帮助
$scan['reviewed'] = 1;
if ($scan['reviewed'] and hasDupe($scan)) {
return false; // filter out
}
return true; // it is passed back, and is output
$scan['reviewed'] = 1;