2014-01-27 6 views
0
foreach ($orderItems as $item) { 
    if ($item->isNotCancelled()) { 
     echo 'ITEM....<br />'; 
     // if last NOT CANCELLED item: 
     echo '<strong>ITEM....</strong><br />'; 
    } else { 
     // ignored completely 
    } 
} 

Мне нужно добавить <strong> Arround последнего пункта, который не был отменен ... Я знаю, как проверить последний элемент массива или итератора, но с условием в случае if , как ты это сделал?Foreach последний элемент с условием

Нужно ли мне 2 петли?


Update & Решение: Я решил эту проблему путем изменения логики и найти первый элемент, а не последним.

Я буду держать вопрос, если кто-то хочет прокомментировать или ответить в любом случае.

ответ

0

Вы можете попробовать это,

$coun = count($orderItems); 
    $i=1; 
    foreach ($orderItems as $item) { 
     if ($item->isNotCancelled()) { 
      echo 'ITEM....<br />'; 
      // if last NOT CANCELLED item: 

     }else { 
      // ignored completely 
     } 
     if($i==($coun-1)) 
      echo '<strong>ITEM....</strong><br />'; 
     $i++; 
    } 
+0

Что делать, если последний элемент ('$ я = = ($ adv-1) ') отменяется? => ничего не получилось сильным :) – DanFromGermany

1

попробовать это:

$i=0; 
$counter=0; 
foreach ($orderItems as $item) { 
    if ($item->isNotCancelled()) { 
     $counter=$i; 
    } 
    $i++; 
} 
$i=0; 
    foreach ($orderItems as $item) { 
    if ($item->isNotCancelled()) { 
     if($counter==$i){ 
     echo "<strong>".$item."</strong></br>" 
    } 
    } 
    $i++; 
} 

что по этому поводу?

+0

Приятная идея, мне пришлось бы предотвратить, чтобы последний элемент получил двойную печать и в любом случае, что, если последний элемент после foreach отменен? – DanFromGermany

1
$lastNonCancelledItem = null; 
foreach ($orderItems as $item) { 
    if ($item->isNotCancelled()) { 
     echo 'ITEM....<br />'; 
     $lastNonCancelledItem = $item; 
    } else { 
     // ignored completely 
    } 
} 

echo '<strong>' $lastNonCancelledItem; //profit 

Если отобразить эти элементы является сложной задачей, что вы не хотите, чтобы повторить в 2-х местах, сделать какой-то функции для отображения элемента

$lastNonCancelledItem = null; 
foreach ($orderItems as $item) { 
    if ($item->isNotCancelled()) { 
     $view->showItem($item); 
     $lastNonCancelledItem = $item; 
    } else { 
     // ignored completely 
    } 
} 

echo $view->showItem($lastNonCancelledItem, TYPE_STRONG); //profit (or whatever) 
Смежные вопросы