循环中的PHP迭代

时间:2016-02-13 16:57:56

标签: php loops iteration

我已经对此进行了一些研究并知道我将使用模数,但我有点卡住了。我有一组像这样的链接:

Link 1

Link 2

Link 3

Link 4 

Link 5

GAP

Link 1

Link 2

Link 3

Link 4 

Link 5

这种情况持续了很长时间。我想从每一位提取链接2,但不能真正做到这一点。到目前为止我已经:

$counter = 0;
 foreach ($items as $item) {
   $counter++;
    if ($counter % 6 == 2)  { continue; }
  }

非常欢迎任何帮助!

2 个答案:

答案 0 :(得分:0)

如果我理解正确的话......你有一个包含所有链接的大阵列?

.active

我认为这样的事情会起作用:

$items = array(
"link1", 
"link2", 
"link3",
"link4",
"link5",
"gap",
"link2_1",
"link2_2",
"link2_3",
"link2_4",
"link2_5",
"gap2"
etc..
);

答案 1 :(得分:0)

这不是您问题的完全答案,但您已在评论中指明数组的来源是HTML页面,所以......

当我们处理HTML / XML字符串时,最好的方法是永远来使用解析器,因为通过它我们可以获得更多的灵活性和更正确的结果。

请参阅此代码:

$data = file_get_contents( 'http://www.scotcourts.gov.uk/current-business/court-rolls/sheriff-court' ) or q('ouch');

$dom = new DOMDocument();

libxml_use_internal_errors(True);
$dom->loadHTML( $data );
libxml_use_internal_errors(False);

$xpath = new DOMXPath( $dom );

$result = array();
$query = '//div[@id="T60AE9CAF007_Col00"]/div/ul';
foreach( $xpath->query( $query ) as $row )
{
    $li = $xpath->query( './li/div/a', $row );
    $result[] = $li->item(1)->getAttribute( 'href' );
}

PhpFiddle demo

通过这种方式,您可以获得忽略差距和技巧的所有链接。

我添加了libxml_use_internal_errors(True)以避免对html错误发出警告 使用主$query,我检索<ul>中的所有<div id="T60AE9CAF007_Col00">节点(请注意,我不知道此ID是否为更改主题的永久性,如果具有最佳属性则替换),然后我处理每个节点以搜索所有<li>个孩子,并将每个第二个孩子的href属性添加到数组中。

我认为代码是自我解释的,但如果您有疑问,请随时提出。