PHP foreach ripetere due volte
-
12-12-2019 - |
Domanda
Ho provato diverse soluzioni per questo problema senza successo.Problema è questo:
Ho alcuni risultati Form Zend_search_lucene che danno 3 risultati con l'ID di: 2, 3, 4
Allora ho alcuni record da una query non correlata fatta con la dottrina che mi dà dire due record con l'ID ID: 2 e 3.
I risultati della ricerca Lucene dovrebbero mostrare sulla pagina in totale 3 record.Di questi ho bisogno di controllare se un ID è uguale a un altro ID della query Docrine, cioè se c'è una partita IE: 2= 2, 3= 3 mostra qualcosa, se non IE: 2= 3 mostra un'altra cosa. .
Cercando di farlo con foroh due volte e un all enza di Stement ma ottengo risultati doppio sulla pagina:
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
}
.
... ecc.
Capisco perché i record vengono ripetuti due volte ma non so qual è il modo giusto per ottenere il giusto risultato.Qualcuno può aiutarmi per favore? Le mie scuse Se c'è una cosa stupida che sto facendo.:)
Soluzione
foreach(... $r) {
$found = false;
foreach(... $r2) {
if (... == ...) {
$found = true; break;
}
}
if ($found) {
// something
} else {
// something else
}
}
. Altri suggerimenti
Puoi eliminare il foreach
interno se l'array in $this->records2
è una mappa come questa:
array(2 => array('id' => 2));
.
Poi all'interno del primo foreach:
if (isset($this->records2[$r->id])) {
// do something
} else {
// do something else
}
.
In questo modo, generacodicitagcode e // do something else
vengono eseguiti al massimo una volta per ciclo.