php foreach يتكرر مرتين
-
12-12-2019 - |
سؤال
لقد كنت أحاول حلولاً مختلفة لهذه المشكلة دون جدوى.المشكلة هي هذا:
لدي بعض النتائج من نموذج 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
}
...إلخ.
أفهم سبب تكرار السجلات مرتين ولكني لا أعرف ما هي الطريقة الصحيحة للحصول على النتيجة الصحيحة.يمكن للشخص الرجاء المساعدة؟أعتذر إذا كان هناك شيء سخيف أفعله.:)
المحلول
نصائح أخرى
هل يمكن القضاء على الداخلية 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
يتم تنفيذها مرة واحدة على الأكثر لكل حلقة.