php foreach повторяется дважды
Я пробовал разные решения этой проблемы без успеха. Проблема заключается в следующем:
У меня есть некоторые результаты из Zend_Search_Lucene, которые дают, скажем, 3 результата с ID: 2, 3, 4
Затем у меня есть несколько записей из несвязанного запроса, сделанного с помощью Doctrine, который дает мне, скажем, две записи с идентификатором ID: 2 и 3.
Результаты поиска Lucene должны отображаться на странице как 3 записи. Из них мне нужно проверить, равен ли идентификатор другому идентификатору запроса Docrine, то есть если есть совпадение, то есть: 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
}
...так далее.
Я понимаю, почему записи повторяются дважды, но я не знаю, как правильно получить правильный результат. Может кто-нибудь, пожалуйста, помогите? Приношу свои извинения, если я делаю глупости.:)
2 ответа
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
выполняются не более одного раза за цикл.