2016-09-23 71 views
-2

我想獲取我的代碼的最後3項foreach循環。如何獲得foreach循環中的最後3項php

我的代碼是:

foreach ($img as $spans) { 

     $fimg = $spans ->getAttribute('loadlate'); 
     if ($spans ->getAttribute('class') === 'loadlate hidden ') { 
     echo $fimg . '<br>'; 

}} 

例子:我的輸出將是:

111 
222 
333 
444 
555 

我想打印只是333-444-555

+5

您可以倒轉數組並在前三項之後切掉任何東西。 – Blake

+2

[在PHP中使用foreach循環的最後3個值]可能的重複(http://stackoverflow.com/questions/28911624/last-3-values-using-foreach-loop-in-php) – Sherif

+0

更好的還是做相反的排序($ i = count($ img) - 1; $ i> count($ img) - 4; $ i--){...} – RiggsFolly

回答

0

我只想扭轉array and count

$img = array_reverse($img); 
$i = 0; 
foreach ($img as $spans) { 
    $fimg = $spans ->getAttribute('loadlate'); 
    if ($spans ->getAttribute('class') === 'loadlate hidden ') { 
     if(++$i>3) breal; 
     echo $fimg . '<br>'; 

    }} 
+0

我沒有看到反向!你確定 ?你只需加上:if(++ $ i> 3)break; –

0

您可以切掉最後三個並循環。

foreach (array_slice($img, -3) as $spans) { ... 

關於第二個想法,因爲它看起來像你迭代一個DomNodelist,你可以使用它的長度,以構建一個for環代替。

$len = $img->length; 
$start = max($len - 3, 0);      // calculate start index 

for ($i=$start; $i < $len; $i++) { 
    $spans = $img->item($i);     // get the item at each index 
    $fimg = $spans ->getAttribute('loadlate'); 
    if ($spans ->getAttribute('class') === 'loadlate hidden ') { 
     echo $fimg . '<br>'; 
    } 
} 
+0

警告:array_slice()期望參數1是數組,在 –

+0

Aha給出的對象,我明白了。這是否是文件的一部分? –

+0

糟糕,剛纔注意到這也已經在評論中提出了。 –