Я пытаюсь сохранить результаты короткой формы в плоский файл (например, в текстовом файле).Файл будет импортирован в Excel как файл с разделителями.Форма имеет флажки, поэтому ее можно установить в массив:
<input type="hidden" name="roflz" value="noresponse">
<input type="checkbox" name="roflz[]" value="Yesroflz" id="Yesroflz" <?php if (isset($_SESSION['roflz']) && $_SESSION['rolfz'] == "Yesroflz") { echo 'checked="checked"'; } ?>> <label for="Yesroflz">Yesroflz</label> <br />
<input type="checkbox" name="roflz[]" value="Moreroflz" id="Moreroflz" <?php if (isset($_SESSION['roflz']) && $_SESSION['roflz'] == "Moreroflz") { echo 'checked="checked"'; } ?>> <label for="Moreroflz">Moreroflz</label><br />
Можно ли развернуть массив из $_POST['rolfz']
и вернуть результаты в $_POST['rolfz']
?Желаемый результат - строка, которую я могу сохранить в текстовом файле.См. Код ниже:
<?php
// begin the session
ini_set('session.cache_limiter', 'private');
session_start();
//Turn checkboxes (an array) into a string. So we can later store it into a strong.
if(isset($_POST['rolfz'])){
$_POST['rolfz'] = implode(",",$_POST['rolfz']);
}
Общая цель - сохранить все значения из $ _SESSION в текстовом файле.Однако, когда я пытаюсь запустить код, я получаю «Примечание: преобразование массива в строку в E: \ cgi-bin \ thankyou.php в строке 14».Ошибка говорит мне, что в приведенном ниже коде я пытаюсь использовать массив в качестве строки.
// Take each input name and create a variable for it
foreach($_POST as $k=>$v) {
$_SESSION[$k]=$v;
}
//Implodes the array so we can store the values as a string (not the variables name though!)
$results = implode("|", $_SESSION);
//Open up the file that we will store the collected information to
$datafile=fopen("V1.txt","a") or exit("Unable to open file to record data!");
//Write the data on a new line ("\r\n") so we don't over-write the existing data
fwrite($datafile, "\r\n".$results);
//Close out the file
fclose($datafile);
//reset session variables and destroy the session
$_SESSION = array();
session_destroy();
?>
Если то, что я делаю, неправильно или невозможно, возможно ли использовать альтернативное утверждение вместо foreach($_POST as $k=>$v)
, чтобы оно игнорировало $_POST['rolfz']
?Таким образом, я могу справиться с $_POST['rolfz']
самостоятельно?
Редактировать (5/10/11): До взрыва:
array(5) { ["date"]=> string(10) "05/10/2011" ["time"]=> string(11) "09:11:20 AM" ["gender"]=> string(4) "male" ["lolz"]=> string(7) "YesLOLZ" ["roflz"]=> array(2) { [0]=> string(8) "Yesroflz" [1]=> string(7) "Noroflz" } }
После взрыва:
array(5) { ["date"]=> string(10) "05/10/2011" ["time"]=> string(11) "09:11:20 AM" ["gender"]=> string(4) "male" ["lolz"]=> string(7) "YesLOLZ" ["roflz"]=> array(2) { [0]=> string(8) "Yesroflz" [1]=> string(7) "Noroflz" } }
Редактировать (5/10/11): Пожалуйста, ознакомьтесь с решением Майкла, если вы пытаетесь сделать подобное решение.И обратите внимание, что я идиот и использовал неправильное имя флажка в моем коде (это должен быть roflz, а не rolfz).