数组迭代中的Echo会覆盖先前的echo(PHP)

n0p*_*0pe 1 html php arrays

目前我这样做:

$lines = file('data/index');
    foreach ($lines as $value)
    list($title, $location) = explode("|", $value);
    echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
Run Code Online (Sandbox Code Playgroud)

而且内容data/index是:

This is a test post|http://google.com 
Another test post|http://google.com
Run Code Online (Sandbox Code Playgroud)

但是,它只打印出该文件的最后一行.几乎每个"回声"都被新的覆盖.我显然没有正确地做到这一点.为什么它不起作用,我怎样才能让它以我想要的方式运行?

Fel*_*ing 6

在您的代码中,只有第三行是循环的一部分.如果要在循环中同时包含两个语句,则必须创建一个块:

foreach ($lines as $value) {
    list($title, $location) = explode("|", $value);
    echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
}
Run Code Online (Sandbox Code Playgroud)

此外,echo应避免使用PHP进行HTML.您应该将PHP嵌入到HTML中.它使您的代码,尤其是您的HTML标记更易于维护,并且不易出错.

参考:foreach

  • 我不同意回应HTML本身就是糟糕的风格. (5认同)