2013-04-07 47 views
1

我的PHP脚本有一个奇怪的问题。我有一个是在脚本的开头定义的数组$键:PHP foreach循环虽然不通过数组但是数据

$keys = array("name","date","event","location","address","description","link","linkname"); 

在某一点以后,我通过数组循环,试图打印键:

foreach ($keys as $key_show) { 
    echo ($key_show); 
} 

而且没有实际印刷。我在循环之前放了一个var_dump($ keys),看起来这个数组仍然在脚本的这个位置填充了上面的条目。有趣的是,只要我把var_dump放到那里,键也出现在foreach循环中。

全部脚本可以看到here

+1

如果您连续测试赋值和'foreach'循环,它将正确运行并显示所有值。分配和循环之间必须有一些东西,导致你的问题。 – 2013-04-07 21:42:35

+0

这就是我的想法,因此使用var_dump进行检查。该数组仍旧处于旧状态,直到foreach循环并且也在循环内部。至少这就是var_dump显示的内容。 – 1nterference 2013-04-07 21:45:47

+0

出于好奇,将'foreach'换成'while'。前一段时间我遇到过这个问题,并且出于某种奇怪的原因,它在'while'循环中工作。 – christopher 2013-04-07 21:53:21

回答

5

从你的链接

} elseif (isset($_POST['editconfirm'])) { 
    ... 
    if ($jsonConcerts) { 
     echo "<form method=\"POST\" action=\"edit.php\""; 
     //var_dump($keys); 
     foreach ($keys as $key_show) { 
      echo ($key_show. ": "); 
      //echo "<input class=\"wide\" name=\"".$key. 
      //"\" value=\"".$jsonConcerts[$counter][$key]."\"><br>\n"; 
     } 
     ... 

您不关闭form标签,因此所有$key_show值被视为form标签的属性,因此在你的HTML输出从未露面。

如果您在命令行上运行此脚本,您将看到有或没有var_dump()的数组值。

+0

是的!而已。魔鬼的细节。 – 1nterference 2013-04-07 21:58:09

0

此外,你为什么用echo “字符串” 和回声( “串”)全部混合?

尝试不使用括号?

foreach ($keys as $key_show) { 
    echo $key_show; 
} 
+0

括号是有效的PHP代码:) – HamZa 2013-04-07 21:55:18

+2

我知道,但为什么在一行中使用它们而不是其他?我从不使用它们[或者总是反过来使用它们]。 – djot 2013-04-07 21:56:09