문제

나는 성공 없이이 문제에 대해 다른 솔루션을 시도하고 있습니다.문제는 다음과 같습니다.

ID가 2, 3, 4

의 ID로 3 가지 결과를 제공하는 Zend_Search_lucene의 일부 결과가 있습니다.

다음 ID ID : 2 및 3을 가진 두 개의 레코드를 제공하는 DOCTRINE으로 만들어진 관련이없는 쿼리에서 기록이 있습니다.

검색 Lucene의 결과는 총 3 개의 레코드로 페이지에 표시되어야합니다.이 중 ID가 Docrine 쿼리의 다른 ID와 동일한 지 확인해야합니다. 즉, 2= 2, 3= 3이 아닌 경우 뭔가를 보여줍니다. 2= 3 또 다른 것을 보여줍니다.

이 작업을 두 번 두 번이나 다른 경우 쉼터로 수행하지만 이중 결과가 페이지에서 이중 결과를 얻습니다.

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

    }
.

... 등.

레코드가 두 번 반복되는 이유를 이해하지만 올바른 결과를 얻는 올바른 방법은 무엇인지 알지 못합니다.누군가가 도와 줄 수 있습니까? 나의 사과하는 어리석은 일이 있다면 내가하는 일이 있다면.:)

도움이 되었습니까?

해결책

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가 루프 당 최대 1 시간으로 실행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top