目前我这样做:
$lines = file('data/index');
foreach ($lines as $value)
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
data/index
的内容是:
This is a test post|http://google.com
Another test post|http://google.com
但是,它只打印出该文件的最后一行。几乎每个“回声”都被新的覆盖。我显然没有正确地做到这一点。为什么它不起作用,我怎样才能让它以我想要的方式运作?
答案 0 :(得分:6)
在您的代码中,只有第三行是循环的一部分。如果要在循环中同时包含两个语句,则必须创建一个块:
foreach ($lines as $value) {
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
}
此外,应避免使用PHP echo
HTML。您应该将PHP嵌入到HTML中。它使您的代码,尤其是您的HTML标记更易于维护,并且不易出错。
参考:foreach
答案 1 :(得分:4)
你需要花括号{}。没有它们,只有下一行在循环后迭代。因此,只有你的list()被迭代。
foreach ($lines as $value)
{ // <-- Important
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
} // <-- Important
答案 2 :(得分:3)
你有:
foreach ($lines as $value)
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
只有列表部分位于foreach循环中。你需要:
foreach ($lines as $value)
{
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
}