Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组迭代中的Echo覆盖以前的Echo(PHP)_Php_Html_Arrays - Fatal编程技术网

数组迭代中的Echo覆盖以前的Echo(PHP)

数组迭代中的Echo覆盖以前的Echo(PHP),php,html,arrays,Php,Html,Arrays,目前我正在这样做: $lines = file('data/index'); foreach ($lines as $value) list($title, $location) = explode("|", $value); echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>'; 但是,它只打印出该文件的最后一行。几乎每个回声都被一个新的回

目前我正在这样做:

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

但是,它只打印出该文件的最后一行。几乎每个回声都被一个新的回声覆盖了。很明显,我做得不对。为什么它不起作用?我怎样才能让它按我想要的方式运行?

你需要大括号{}。如果没有它们,只有下一行在循环后被迭代。因此,只有您的列表被迭代

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)
{ // <-- 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>';
}
此外,应避免使用PHP重复HTML。您应该将PHP嵌入到HTML中。它使您的代码,尤其是HTML标记更易于维护,并且不易出错


引用:

在代码中,只有第三行是循环的一部分。如果要在循环中同时使用这两条语句,则必须创建一个块:

foreach ($lines as $value) {
    list($title, $location) = explode("|", $value);
    echo '<div id="entry"><a href="'.$location.'">'.$title.'</a></div>';
}
此外,应避免使用PHP重复HTML。您应该将PHP嵌入到HTML中。它使您的代码,尤其是HTML标记更易于维护,并且不易出错

参考资料:

您有:

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>';
}
你有:

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>';
}

啊!直到刚才才看到其他答案。编辑:+1为费利克斯·金的回答!直到刚才才看到其他答案。编辑:+1为费利克斯·金的回答谢谢,真不敢相信我错过了。我是新手PHP@MaxMackie:此问题并非特定于PHP。这在大多数其他基于C语言的语言中都是一样的。我不同意回显HTML本身就是一种糟糕的样式。@FeliX Kling:作为对样式注释的回应,我应该如何正确地迭代文件的内容并将其转换为HTML?@MaxMackie也许你已经习惯Python了?在这种语言中,代码的缩进定义了块。谢谢你,真不敢相信我错过了。我是新手PHP@MaxMackie:此问题并非特定于PHP。这在大多数其他基于C语言的语言中都是一样的。我不同意回显HTML本身就是一种糟糕的样式。@FeliX Kling:作为对样式注释的回应,我应该如何正确地迭代文件的内容并将其转换为HTML?@MaxMackie也许你已经习惯Python了?在这种语言中,代码的缩进定义了块。让我猜猜,您来自python背景?@code\u burgar在这种情况下,他的缩进应该是正确的;让我猜猜,你来自python背景?@code_burgar如果是这样的话,他的缩进应该是正确的;下一个声明。如果错误地在后面键入分号,则可能在同一行!下一个声明。如果错误地在后面键入分号,则可能在同一行!