Question

J'ai essayé différentes solutions à ce problème sans succès.Le problème est le suivant :

J'ai quelques résultats de Zend_Search_Lucene qui donnent, disons, 3 résultats avec l'ID de :2, 3, 4

Ensuite, j'ai quelques enregistrements d'une requête sans rapport réalisée avec Doctrine qui me donne, disons, deux enregistrements avec l'ID ID :2 et 3.

Les résultats de Search Lucene devraient apparaître sur la page avec un total de 3 enregistrements.Parmi ceux-ci, je dois vérifier si un ID est égal à un autre ID de la requête Docrine, c'est-à-dire s'il y a une correspondance, c'est-à-dire :2=2 , 3=3 montre quelque chose, sinon c'est à dire :2=3 montre autre chose.

J'essaie de faire cela avec FOREACH deux fois et une déclaration IF ELSE mais j'obtiens des résultats doubles sur la page :

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.

Je comprends pourquoi les enregistrements sont répétés deux fois mais je ne sais pas quelle est la bonne façon d'obtenir le bon résultat.Puis-je avoir une aide s'il vous plait?Mes excuses si je fais quelque chose de stupide.:)

Était-ce utile?

La solution

foreach(... $r) {
  $found = false;
  foreach(... $r2) {
    if (... == ...) {
      $found = true; break;
    }
  }
  if ($found) {
    // something
  } else {
    // something else
  }
}

Autres conseils

Vous pourriez éliminer l'intérieur foreach si le tableau dans $this->records2 est une carte comme celle-ci :

array(2 => array('id' => 2));

Puis à l'intérieur du premier foreach :

if (isset($this->records2[$r->id])) {
    // do something
} else {
    // do something else
}

De cette façon, // do something else et // do something sont exécutés au plus une fois par boucle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top