Php 使用';如果';条件

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

我一直在尝试使用DOM解析器解析论坛站点上的语句/问题。 它的工作很好,它摘录了论坛上的所有声明。因此,我试图限制使用
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) {...}