目前我正在做这件事:
$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
但是,它只打印出该文件的最后一行。几乎就像每个"回声"都被一个新的回声覆盖一样。我显然做得不对。为什么它不起作用?我如何才能让它按我想要的方式运行?
在代码中,只有第三行是循环的一部分。如果你想让两个语句都在循环中,你必须创建一个块:
foreach ($lines as $value) {
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
}
此外,应该避免使用PHP对HTML进行echo
处理。您应该将PHP嵌入到HTML中。它使您的代码,尤其是HTML标记更易于维护,并且不易出错。
参考:foreach
您需要大括号{}。如果没有它们,只有下一行在循环后被迭代。因此,只有您的list((被迭代。
foreach ($lines as $value)
{ // <-- Important
list($title, $location) = explode("|", $value);
echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
} // <-- Important
您有:
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>';
}