سؤال

لقد كنت أحاول حلولاً مختلفة لهذه المشكلة دون جدوى.المشكلة هي هذا:

لدي بعض النتائج من نموذج Zend_Search_Lucene والتي تعطي 3 نتائج بمعرف:2، 3، 4

ثم لدي بعض السجلات من استعلام غير ذي صلة تم إجراؤه باستخدام Doctrine والذي يعطيني سجلين بمعرف المعرف: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

    }

...إلخ.

أفهم سبب تكرار السجلات مرتين ولكني لا أعرف ما هي الطريقة الصحيحة للحصول على النتيجة الصحيحة.يمكن للشخص الرجاء المساعدة؟أعتذر إذا كان هناك شيء سخيف أفعله.:)

هل كانت مفيدة؟

المحلول

giveacodicetagpre.

نصائح أخرى

هل يمكن القضاء على الداخلية 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 يتم تنفيذها مرة واحدة على الأكثر لكل حلقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top