Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组\过滤器过滤掉整个数组_Php_Arrays_Filtering - Fatal编程技术网

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;