Отправляет email-рассылки с помощью сервиса Sendsay

[TC] задачка на php

Друзья, помогите мне пожалуйста решить очередную задачку на php. Я пишу
алгоритм отображения списка вопросов, заданных через форму на сайте. Вопросы
хранятся в файле. Каждая строка файла это вопрос. строка состоит из
нескольких полей (имя, город, адрес электронной почты и т.п.), разделенных
символом "#" (решётка).

$asks=file("asks.cfg"); // массив вопросов
список вопросов отображается в цикле
foreach($asks as $i)
{
# то есть $i - очередная строка файла и соответственно очередной вопрос
$z=explode("#", $i);
# получаю массив подстрок
# и далее работаю с полями конкретной записи.
$ip=$z[0];
$name=$z[1];
$city=$z[2];
$email=$z[3];
$msg=$z[4];

Вопрос состоит в следующем: как мне внутри цикла получить номер строки, т.е.
номер вопроса?
если $asks[0]=$i, как мне получить нуль, т.е. ключь массива без заморочек с
функцией array_keys()?
То есть я не просто отображаю список вопросов, я отображаю форму для ответа
на них каждому вопросу соответствует радиокнопка, внизу размещается поле
редактирования и кнопка "ответить". Для того, чтобы скрипт понимал, на какой
вопрос я отвечаю, нужно задать атрибут value, которому я присваиваю
значение- номер строки в файле и соответственно номер вопроса.

Спасибо.
Эдик. Новокузнецк.
winks***@r*****.ru

Ответить   Thu, 5 Apr 2007 02:09:16 +0800 (#653688)

 

Ответы:

Эдуард!

Думаю можно обойтись простой операцией инкремента.

Т.е. просто поставьте счетчик внутри цикла - ++$counter, или $counter
= $counter + 1, если так понятнее...

Если вы не хотите разводить излишне нагроможденного кода, то имеет
смысл воспользоваться иной конструкцией для организации цикла, а
именно for($i=0; $i<sizeof($z); $i++)

В этом случае вы получаете переменную $i, которая выполняет роль
счетчика + компактную запись всего этого действа.

С уважением,
Василий

Ответить   Василий Thu, 5 Apr 2007 04:41:42 +0300 (#653762)

 

Спасибо большое, Василий. Проблема разрешилась необычно дурацким, но отлично
работающим способом:

$asks=file($asks_file);
foreach($asks as $i)
{
$reverse=array_flip($asks); // меняем местами ключи и значения
$num=$reverse[$i]; // номер строки

$z=explode("#", $i);
$ip=$z[0];
$name=$z[1];
$city=$z[2];
$email=$z[3];
$msg=$z[4];

$form.="<input type='radio' name='number' value='".$num."'>";
$form.="посетитель, назвавший себя <a href='mailto:".$email."'>".$name."</a>
из города ".$city." интересуется:<br>".$msg."\n";
echo $form;
Еще раз спасибо.
Эдик. Новокузнецк.
winks***@r*****.ru

Ответить   Thu, 5 Apr 2007 11:31:59 +0800 (#653776)