Php 使用';如果';条件
我一直在尝试使用DOM解析器解析论坛站点上的语句/问题。 它的工作很好,它摘录了论坛上的所有声明。因此,我试图限制使用Php 使用';如果';条件,php,Php,我一直在尝试使用DOM解析器解析论坛站点上的语句/问题。 它的工作很好,它摘录了论坛上的所有声明。因此,我试图限制使用if条件提取语句。它仍然不能解决问题 我考虑了构建if条件时的问题,所以我单独运行了循环,它成功了 守则如下: <?php $i = 1; $elementCount=0; while(true){ require_once('dom/simple_html_dom.php'); $html = file_get_html('htt
if
条件提取语句。它仍然不能解决问题
我考虑了构建if条件时的问题,所以我单独运行了循环,它成功了
守则如下:
<?php
$i = 1;
$elementCount=0;
while(true){
require_once('dom/simple_html_dom.php');
$html = file_get_html('http://www.usmleforum.com/forum/index.php?forum=1&Page='.$i);
foreach ($html->find("tr") as $row) {
$element = $row->find('td.FootNotes2',0);
if ($element == null) { continue; }
$textNode = array_filter($element->nodes, function ($n) {
return $n->nodetype == 3; //Text node type, like in jQuery
});
if (!empty($textNode)) {
$text = current($textNode);
echo $text."<br>";
$elementCount++;
}
}
if($elementCount==12){
break;
}
$i++;
}
?>
因此,即使为12条语句添加了if条件,它仍然会永远运行
现在,仅if条件:
<?php
$i = 1;
$elementCount=0;
while(true){
echo "harish".$i."<br>";
$elementCount++;
if($elementCount==12){
break;
}
$i++;
}
?>
它工作正常,只打印12条给定语句
非常感谢您的帮助……我不确定您是否正确增加了$elementCount,但由于我无法看到您的代码输出,我不确定。 我会将break语句移到$elementCount++之前,并回显$elementCount以了解到底发生了什么 生成的代码如下所示:
<?php
$i = 1;
$elementCount=0;
while(true){
require_once('dom/simple_html_dom.php');
$html = file_get_html('http://www.usmleforum.com/forum/index.php?forum=1&Page='.$i);
foreach ($html->find("tr") as $row) {
$element = $row->find('td.FootNotes2',0);
if ($element == null) { continue; }
$textNode = array_filter($element->nodes, function ($n) {
return $n->nodetype == 3; //Text node type, like in jQuery
});
if (!empty($textNode)) {
$text = current($textNode);
echo $text."<br>";
echo $elementCount;
if($elementCount===12){
break;
}
$elementCount++;
}
}
$i++;
}
?>
您应该更好地组织代码。因此,您将看到在foreach中增加elementCount 当您在foreach外部检查确切的elementCount时,您的计数器可能会上升到12个元素以上,现在将永远运行 您可以将循环更改为
while($elementCount < 12) {...}
如果是条件检查而不是循环,我取出
echo$elementCount代码>从您的答案中选择并尝试了它,但它仍然打印所有语句。好的,我正在更仔细地查看您的代码,我看到您有两个循环,while和foreach。因此while始终为true,并一直运行,直到$elementCount达到12,然后再次运行。尝试在不使用while循环的情况下运行代码。很抱歉,我的回答中遗漏了这一点。有一个可选的数值参数可用于break
,用于指定要退出的循环级别。默认值为1,表示foreach
循环。使用break 2
可以在的同时退出循环。
if ($elementCount >= 12) {...}