FOREACH PHP повторяется дважды
-
12-12-2019 - |
Вопрос
Я пробовал разные решения для этой проблемы без успеха.Проблема в том, что это:
У меня есть некоторые результаты, образующиеся zend_search_lucene, которые дают скажем, что 3 результаты с идентификатором: 2, 3, 4
Тогда у меня есть некоторые записи из неравновешенного запроса, сделанного с доктриной, который дает мне два записи с идентификатором идентификатора: 2 и 3.
Результаты поиска Лучна должны показывать на странице всего 3 записей.Из них мне нужно проверить, будет ли идентификатор для другого идентификатора запроса DOCRINE, то есть если есть совпадение IE: 2= 2, 3= 3 показывают что-то, если нет, то есть: 2= 3 показать другую вещь. .
пытается сделать это с foreach дважды и Ant End Stement, но я получаю двойные результаты на странице:
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.
Я понимаю, почему записи повторяются дважды, но я не знаю, какой правильный способ получить правильный результат.Может кто-нибудь, пожалуйста, помогите? Мои извинения, если есть какая-то глупость, которую я делаю.:)
Решение
foreach(... $r) {
$found = false;
foreach(... $r2) {
if (... == ...) {
$found = true; break;
}
}
if ($found) {
// something
} else {
// something else
}
}
. Другие советы
Вы можете устранить внутренний генеракодицетагCode, если массив в foreach
является карта, подобная это:
array(2 => array('id' => 2));
.
Тогда внутри первого foreach:
if (isset($this->records2[$r->id])) {
// do something
} else {
// do something else
}
.
Таким образом, $this->records2
и // do something else
выполняются максимум одновременно на петлю.