在while中查找标题的更改($ row = mysql_fetch_array($ result)){PHP

时间:2011-03-17 18:18:40

标签: php mysql

while ($row = mysql_fetch_array($result)) {  
    <h3> <?php echo $row['ideaTitle']; ?> </h3>
    <blockquote>
        <p>
                    <em> 
                        <?php echo $row['feedback']; ?> 
                    </em> 
                </p>
            </blockquote>
<?php } ?>

这是我的工作代码。我想尝试找到$ row ['ideaTitle']的新内容,但我不知道该怎么做。我想过设置一个带有标题名称的临时变量,但我觉得需要一个更简单的解决方案。

4 个答案:

答案 0 :(得分:3)

使用临时变量几乎是要走的路,我会说 - 这就是我在这种情况下所做的事情

它通常转换为这种代码:

$previousTitle = null;
while ($row = mysql_fetch_array($result)) {  
    if ($row['ideaTitle'] != $previousTitle) {
        // do something when the current line
        // is the first with the current title
    }

    // work with $row

    // Store the current title to the temporary variable,
    // to be able to do the comparison on next iteration
    $previousTitle = $row['ideaTitle'];
}

答案 1 :(得分:0)

除了使用临时变量之外别无他法。但是,不要使用单个最后一个值字符串,请尝试计数映射:

if (@$seen_titles[ $row["ideaTitle"] ]++ == 0) {
     print "new title";
}

这个技巧有效,因为在比较之后实际计数++。但是,对于冗余通知,它需要@错误抑制。

答案 2 :(得分:0)

Imo这是一个非常简单的解决方案。但是,您也可以预处理数据并创建title => feedbacks地图:

$feedbacks = array();

while (($row = mysql_fetch_array($result))) {
    if(!array_key_exists($row['ideaTitle'], $feedbacks) {
        $feedbacks[$row['ideaTitle']] = array();
    }
    $feedbacks[$row['ideaTitle']][] = $row['feedback'];
}

然后创建输出:

<?php foreach($feedbacks as $title => $fbs): ?>
    <h3> <?php echo $title; ?> </h3>
    <?php foreach($fbs as $fb): ?>
        <blockquote>
           <p>
                <em><?php echo $fb ?></em> 
           </p>
        </blockquote>
    <?php endforeach; ?>
<?php endforeach; ?>

答案 3 :(得分:0)

跟踪以前在键值数组中遇到的标题。

 $prevTitles = array();
    while ($row = mysql_fetch_array($result)) {  
        if($prevTitles[$row['ideaTitle']] == true)
            continue;

        $prevTitles[$row['ideaTitle']] = true;

        <h3> <?php echo $row['ideaTitle']; ?> </h3>
        <blockquote>
            <p>
                        <em> 
                            <?php echo $row['feedback']; ?> 
                        </em> 
                    </p>
                </blockquote>
    <?php } ?>