[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Странное поведение циклов for и while
Kapitan79
Всем привет!

Есть такой вот кусок кода:



/* Определяем список значений справочника */
$query = "SELECT $failds FROM ".$_SESSION['s_table']; //запрашиваем информацию по всем значемым для данного шага полям справочника
$res1 = mysql_query($query);
for ($z=0; count($arr_el_type_label)>$z; $z++)
{
$i .= $arr_el_type_label[$z];
while ($row = mysql_fetch_array($res1))//перебираем результат запроса
{
$faild = $arr_failds[$z];
$i .= ','.$row[$faild];
}
$i .= ';';
}

echo $i;


Если на пальцах, то переменная $failds содержит три поля таблицы, имя которой записано в $_SESSION['s_table'], записанных через запятую.

Массив $arr_el_type_label также содержит 3 значения.
Массив $arr_failds содержит теже названия полей что и в $failds, записанные в томже порядке.

При написании кода был рассчёт, что цикл while будет выполнен 3 раза и, соответственно, будут подставлены в массив $row три ключа.

Однако не понятно почему цикл while отрабатывается только один раз. В остальных случаях всё пролетает мимо него.

Заработало только после того как я поменял код на этот:

for ($z=0; count($arr_el_type_label)>$z; $z++)
{
$i .= $arr_el_type_label[$z];
/* Определяем список значений справочника */
$query = "SELECT $failds FROM ".$_SESSION['s_table']; //запрашиваем информацию по всем значемым для данного шага полям справочника
$res1 = mysql_query($query);
while ($row = mysql_fetch_array($res1))//перебираем результат запроса
{
$faild = $arr_failds[$z];
$i .= ','.$row[$faild];
}
$i .= ';';
}

echo $i;


Помогите разобраться!

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.