我一直在为这个问题尝试不同的解决方案而没有成功。问题是:
我有一些Zend_Search_Lucene的结果,它给出3个结果,ID为:2,3,4
然后我从一个用Doctrine创建的无关查询中得到了一些记录,这些记录让我说两个ID为2和3的记录。
Search Lucene的结果应该在页面上显示为3条记录。其中我需要检查一个ID是否等于Docrine查询的另一个ID,即如果有匹配即:2 = 2,3 = 3显示某些东西,如果不是ie:2 = 3显示另一个东西。< / p>
尝试使用FOREACH两次和IF ELSE sttement执行此操作,但我在页面上获得了双重结果:
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
}
...等
我理解为什么记录重复两次,但我不知道什么是获得正确结果的正确方法。有人可以帮忙吗? 如果我正在做一些愚蠢的事,我道歉。 :)
答案 0 :(得分:3)
foreach(... $r) {
$found = false;
foreach(... $r2) {
if (... == ...) {
$found = true; break;
}
}
if ($found) {
// something
} else {
// something else
}
}
答案 1 :(得分:0)
如果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
每个循环最多执行一次。