2013-04-07 3 views
1

У меня странная проблема с моим PHP-скриптом. У меня есть массив $ ключи, которые определены в начале сценария:PHP foreach loop не проходит, хотя данные в массиве

$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, он работает правильно и отображает все значения. Между назначением и циклом должно быть что-то, что вызывает вашу проблему. –

+0

Вот что я подумал, следовательно, проверим с помощью var_dump. Массив все еще находится в старом состоянии, вплоть до цикла foreach, а также внутри цикла. По крайней мере, это то, что отображает var_dump. – 1nterference

+0

Просто из любопытства замените 'foreach' на' while'. У меня была эта проблема немного назад, и по какой-то странной причине она работала в цикле 'while'. – christopher

ответ

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

0

Кроме того, почему вы используете эхо «строка» и эхо («строка») все смешанные?

Попробуйте без кронштейнов?

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

Скобки действительны PHP-код :) – HamZa

+2

Я знаю, но зачем использовать их в одной строке, а не в другом? Я никогда не использую их (или использовал бы их всегда наоборот). – djot