PHP代码中的if语句问题

时间:2016-06-14 14:50:32

标签: php html mysql sql hyperlink

我首先得到了这段代码:

foreach( $results as $row ) {
    if ($row['class'] <>$class) {
        echo "<tr><td><p class=\"boldtitle\">".$row['class']."</p></td></tr>";
    }
    echo "
    <tr>
        <td><a href=\"".$row['hyperlink']."\">".$row['title']."</a></td>
    </tr>
    ";
    $class = $row['class'];
}
}

工作正常,但我希望当".$row['hyperlink']."等于"NULL"时,HTML超链接标记会消失。

为此,我写了这样的代码:

$class = $row['class'];
foreach( $results as $row ) {
    if ($row['class'] <>$class) {
        echo "<tr><td><p class=\"boldtitle\">".$row['class']."</p></td></tr>";
    }
    if ($row['hyperlink'] != "NULL")    {
        echo "<tr><td><a href=\"".$row['hyperlink']."\">".$row['title']."</a></td></tr>";
    } else {
        echo "<tr><td>".$row['title']."</td></tr>";
    }
}
}
?>

根据需要设置或删除超链接,但分组功能也丢失了。

而不是:

**Cleaner**
David
Phil
Gustav
**Farmer**
Lynn
Peter
**Mason**
Brion
Alf

我明白了:

**Cleaner**
David
**Cleaner**
Phil
**Cleaner**
Gustav
**Farmer**
Lynn
**Farmer**
Peter
**Mason**
Brion
**Mason**
Alf

有人知道我做错了什么吗?哪里是我的错?

1 个答案:

答案 0 :(得分:1)

在第二段代码中,您将$class = $row['class'];移到了foreach循环之外。这意味着它最初将设置为null(因为在循环之前$row['class']未定义),因此$row['class'] <>$class将始终为true。将它移回循环内部,它应该像以前一样工作。

$class = null; // initialize $class to null
foreach( $results as $row ) {
    if ($row['class'] <>$class) {
        echo "<tr><td><p class=\"boldtitle\">".$row['class']."</p></td></tr>";
    }
    if ($row['hyperlink'] != "NULL") {
        echo "<tr><td><a href=\"".$row['hyperlink']."\">".$row['title']."</a></td></tr>";
    } else {
        echo "<tr><td>".$row['title']."</td></tr>";
    }
    $class = $row['class']; // reset $class to the current value here
}