2013-04-07 77 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