foreach循环的结果多次打印

时间:2013-11-19 15:03:16

标签: php mysql

我正在尝试拆分一个分隔的邮政编码字符串,而不是看起来像这样:

之前:
第1行:ST16,ST17,ST18,ST19,ST20
第2行:AT16,AT17,AT18,AT19,AT20
第3行:LL16,LL17,LL18,LL19,LL20

后:
第1行:ST16
第2行:ST17
第3行:ST18 ...等

每个邮政编码都有自己独立的行。我设法做到这一点,但是当我运行我的代码时,它似乎是按照它包含的元素数打印邮政编码数组。例如,如果阵列中有11个元素,它将打印[ST16,ST17,ST18,ST19,...] 11次。有谁知道为什么会这样?

if ($db_found) {

// Select all fields from bodyshops_master_network table
$SQL = "SELECT * FROM bodyshops_master_network";
$result = mysql_query($SQL);

while ( $db_field = mysql_fetch_assoc($result) ) {

    // Splits the arrays
    $row = explode(",", $db_field['postcodes_covered']);

    foreach ($row as $value) {
        print "<pre>";
        echo implode("<br>", $row);
        print "</pre>";    
    }

}

mysql_close($db_handle);

} else {

print "Database NOT Found ";
mysql_close($db_handle);
}

2 个答案:

答案 0 :(得分:1)

你的foreach循环是多余的,应该只是:

$text = implode('<br />', $row);
echo "<pre>$text</pre>";

如果你坚持循环,那么它应该是

echo '<pre>';
foreach($row as $value) {
    echo $value, '<br />';
}
echo '</pre>';

答案 1 :(得分:0)

implode() 完全explode()相反。基本上,它会将整个数组与您想要的任何字符串粘合在一起(在这种情况下为<br>)。因此,按顺序显示邮政编码所需的唯一代码是:

$row = explode(",", $db_field['postcodes_covered']);
echo implode("<br>", $row);

这将输出所有邮政编码,并在它们之间换行。你输出11次的原因是因为数组中有11个项目,所以implode()被调用了11次。