foreach循环打印多次的结果


Results of foreach loop prints multiple times

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

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

之后:
第1行:ST16
第2行:ST17
第3行:ST18…etc

每个邮政编码都有自己的一行。我已经成功地做到了这一点,但是当我运行代码时,它似乎是按照包含的元素数量打印邮政编码数组。例如,如果阵列中有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);
}

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

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

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

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

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

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

这将输出所有邮政编码,其中包含换行符。之所以得到11次输出,是因为数组中有11个项,所以implode()被调用了11次。