2009-11-05 3 views
4

Say я хочу через петлю узлов XML, но я хочу, чтобы игнорировать первые 10, а затем ограничить число я захватить до 10.предел и смещение Еогеасп петли

$limit=10; //define results limit 
$o=20; //define offset 
$i=0; //start line counter 

foreach($xml->id AS $key => $value){ 
    $i++; 
    if($i > $o){ 
    //if line number is less than offset, do nothing. 
    }else{ 
    if($i == "$limit"){break;} //if line is over limit, break out of loop 
    //do stuff here 
    } 
} 

Таким образом, в этом примере, идентификатор хочет начать на результат 20 и показать только 10 результатов, а затем выйти из цикла. Однако он не работает. Есть предположения?

+0

См. здесь: [http://stackoverflow.com /questions/1679559](http://stackoverflow.com/questions/1679559) –

ответ

6

Существует несколько ошибок. Он должен быть

foreach (... 
    if ($i++ < $o) continue; 
    if ($i > $o + $limit) break; 
    // do your stuff here 
} 
+0

Большое спасибо за ваш код. – whitesiroi

0
if($i == $limit+$o){break;} 

вы должны использовать, что причина $limit достигнут до $ O

0

Вы можете использовать следующую функцию() для Yours массива элементов:

$limit=10; //define results limit 
$o=20; //define offset 
$i=0; //start line counter 

for ($j = 0; $j < $o; $j++) { 
    next($xml->id); 
} 

foreach($xml->id AS $key => $value){ 
     $i++; 
     if($i > $o){ 
     //if line number is less than offset, do nothing. 
     }else{ 
     if($i == "$limit"){break;} //if line is over limit, break out of loop 
     //do stuff here 
     } 
} 

Подробнее информация о функции next(): http://php.net/manual/en/function.next.php

Смежные вопросы