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']的新内容,但我不知道该怎么做。我想过设置一个带有标题名称的临时变量,但我觉得需要一个更简单的解决方案。
答案 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 } ?>