2013-05-18 5 views
1

Я пытаюсь получить значение $ row-> цена на последней итерации в мой цикл, как показано нижеКак получить последнее значение для цикла?

foreach ($getprices->result() as $row) 
{ 
    if ($bb=='on'){ 
     $pric = $row->price+2.50; 
     $pri = number_format($pric,2); 
    }else{ 
     $pric = $row->price; 
     $pri = number_format($pric,2); 
    } 

Я попробовать следующее, однако он не явился на работу

$numItems = count($getprices->result()); 
$i = 0; 
foreach($getprices->result() as $row) { 
    if(++$i === $numItems) { 
    if ($bb=='on'){ 
     $pric = $row->price+2.50; 
     $pri = number_format($pric,2); 
    }else{ 
     $pric = $row->price; 
     $pri = number_format($pric,2); 
    } 
    } 
} 

Любые предложения?

+0

Вы имеете в виду, если имеется 10 записей, вы хотите получить 10-й в конце цикла? – baig772

+0

Точно, однако количество записей может меняться. – K20GH

+0

'$ rows = $ getprices-> result(); $ rows [count ($ rows) -1] -> price; ' – cgTag

ответ

3

Использование $row->price только после завершения цикла:

foreach ($getprices->result() as $row) 
{ 
    // ... 
} 

$lastprice = $row->price; 

Это действительно просто трюк, но он будет работать. Если итерация массива вы можете сделать это следующим образом:

$array = $getprices->result(); 
foreach ($array as $row) 
{ 
    // ... 
} 

$lastprice = end($array)->price; // this will work independently of any loop 
+0

ОК, ответ, который я получил, не был тем, что я ожидал. Есть ли быстрый способ сделать обратное? Получить первое в массиве? – K20GH

+0

О, неважно. Ответил собственный вопрос, замените конец на сброс. – K20GH

1

Добавить строку $lastitem=$row сразу после того, для заявления; он будет содержать последнее значение после завершения цикла.

+0

Зачем создавать новую переменную, если вы можете просто использовать '$ row'? – rpkamp

+0

Я полагаю, что это похмелье из таких языков, как C, где переменная цикла не имеет значения, которое она имела во время последней итерации при ее выходе, или ситуаций, когда параметр управления имеет локальную область действия и не существует, когда цикл завершается. Это заставило меня привыкнуть не доверять контрольной переменной за пределами ее цикла. Согласитесь, здесь не нужно. – Floris

1

Вы можете использовать php end, чтобы получить последнее значение массива.

eg;

$arr = $getprices->result(); 
$last = end($arr); 
Смежные вопросы