循环中的PHP迭代
问题描述:
我已经仔细研究了这一点,并知道我将使用模数,但有点卡住了。我有一组链接,像这样:循环中的PHP迭代
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; }
}
任何帮助是非常欢迎的!
答
这不是一个确切回答你的问题,但你在评论指定您的阵列的来源是一个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');
}
通过这种方式,可以获取所有链接忽视的差距和技巧。
我已添加libxml_use_internal_errors(True)
以避免发生html错误警告。
与主$query
,我检索所有<ul>
节点在<div id="T60AE9CAF007_Col00">
(注意,我不知道如果此ID如果永久的主题的变化,取代如果具有最佳属性),然后我处理每个节点搜索所有<li>
孩子并且我添加到每个第二个孩子的href
属性。
我觉得代码如果是自我解释的,但如果你有疑问,随时提问。
- 查看更多有关DOMDocument
- 查看更多有关DOMXPath
答
如果我正确理解你..你有一个大型数组与所有链接?
$items = array(
"link1",
"link2",
"link3",
"link4",
"link5",
"gap",
"link2_1",
"link2_2",
"link2_3",
"link2_4",
"link2_5",
"gap2"
etc..
);
我想这样的事情会的工作:
$counter = 0;
foreach ($items as $item) {
$counter++;
//When counter is 2.. do something.. (1 or 2, can't remember, a while since i worked with php)
if ($counter == 2) { continue; }
//when gap is reached, reset counter, (5 or 6, can't remember..)
if ($counter == 6) { $counter = 0; }
}
是否循环逢隙后重新开始,或者是连续的? –
整个过程都是一样的! – roo
你想提取第二个项目或“链接2”? – chris85