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.:)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top