题
我一直在尝试不同的解决方案来解决这个问题,但没有成功。问题是这样的:
我从 Zend_Search_Lucene 得到了一些结果,其中 3 个结果的 ID 为:2, 3, 4
然后我有一些来自 Doctrine 的不相关查询的记录,这给了我两个带有 id ID 的记录:2和3。
搜索 Lucene 的结果应在页面上显示总共 3 条记录。其中我需要检查一个 ID 是否等于 Docrine 查询的另一个 ID,即是否存在匹配,即:2=2 , 3=3 显示一些内容,如果没有,即:2=3表明另一件事。
尝试使用 FOREACH 两次和 IF ELSE 语句执行此操作,但我在页面上得到双重结果:
foreach($this->results as $r): // records form search Lucene ie 2, 3, 4
foreach($this->records2 as $r2){ // records from another table (query) 2 and 3
if(($r2['id']) == ($r->id)) {
// do something
} else {
// dosothing else
}
...ETC。
我理解为什么记录重复两次,但我不知道获得正确结果的正确方法是什么。有人可以帮忙吗?如果我做了一些愚蠢的事情,我很抱歉。:)
解决方案
foreach(... $r) {
$found = false;
foreach(... $r2) {
if (... == ...) {
$found = true; break;
}
}
if ($found) {
// something
} else {
// something else
}
}
. 其他提示
你可以消除内在 foreach
如果数组在 $this->records2
是这样的地图:
array(2 => array('id' => 2));
然后在第一个 foreach 中:
if (isset($this->records2[$r->id])) {
// do something
} else {
// do something else
}
这样, // do something else
和 // do something
每个循环最多执行一次。
不隶属于 StackOverflow