PHP foreach 반복 두 번
-
12-12-2019 - |
문제
나는 성공 없이이 문제에 대해 다른 솔루션을 시도하고 있습니다.문제는 다음과 같습니다.
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 시간으로 실행됩니다.
제휴하지 않습니다 StackOverflow