2016-09-23 67 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

糟糕,刚才注意到这也已经在评论中提出了。 –