0

我一直在尝试不同的解决方案来解决这个问题,但没有成功。问题是这样的:

我有一些来自 Zend_Search_Lucene 的结果,它给出了 3 个结果,ID 为:2、3、4

然后我从一个用 Doctrine 制作的不相关查询中获得了一些记录,它给了我两条 ID 为 ID 的记录:2 和 3。

Search 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。

我理解为什么记录重复两次,但我不知道什么是获得正确结果的正确方法。有人可以帮忙吗?如果我在做一些愚蠢的事情,我很抱歉。:)

4

2 回答 2

3
foreach(... $r) {
  $found = false;
  foreach(... $r2) {
    if (... == ...) {
      $found = true; break;
    }
  }
  if ($found) {
    // something
  } else {
    // something else
  }
}
于 2012-05-22T09:14:37.353 回答
0

foreach如果数组 in$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循环最多执行一次。

于 2012-05-22T09:18:45.607 回答