使用array_walk()进入奇怪的情况只会部分删除我的方法中的匹配,而不确定究竟发生了什么。我目前正在使用PHP v5.6.4。问题几乎似乎是它只删除了所有次要比赛。
字距调整功能
private function strip(array $exceptions)
{
array_walk($this->hosts, function($v, $k) USE ($exceptions)
{
foreach ($exceptions AS $exception)
{
if (preg_match("/{$exception}/i", strtolower($k)))
{
unset($this->hosts[$k]); break;
}
}
});
print_r($this->hosts); die;
}
答案 0 :(得分:1)
答案 1 :(得分:1)
这与Mark Baker提供的信息一起工作,感谢Mark。
private function strip(array $exceptions)
{
$this->hosts = array_filter($this->hosts, function ($k) USE ($exceptions)
{
foreach ($exceptions AS $exception)
{
if (preg_match("/{$exception}/i", strtolower($k)))
return false;
}
return true;
}, ARRAY_FILTER_USE_KEY);
return $this;
}