2017-08-24 43 views
0

CSVに書き込む前にデータを配列に格納してCSVファイルにデータを挿入しようとしています。しかし、私は多目的配列をCSVファイルに書き込む際に問題に直面しています。PHPを使用して配列をCSVファイルに書き込む

<input type="text" name="names" placeholder="Enter Name" /> 
<select name="gender"> 
    <option value="Male">Male</option> 
    <option value="Female">Female</option> 
</select> 
<input type="text" name="age" placeholder="Enter Age" /> 
<input type="text" name="state" placeholder="Enter State" /> 

<label>How Did You Find Us?</label> 

<input type="checkbox" name="remarks[]" value="Search Engine (eg. Google)"> Search Engine (eg. Google) &nbsp;&nbsp;&nbsp; 
<input type="checkbox" name="remarks[]" value="Facebook"> Facebook &nbsp;&nbsp;&nbsp; 
<input type="checkbox" name="remarks[]" value="Newspaper Ads"> Newspaper Ads &nbsp;&nbsp;&nbsp; 
<input type="checkbox" name="remarks[]" value="Bus-Stop Ads"> Bus-Stop Ads &nbsp;&nbsp;&nbsp; 

次のコードを、私は、入力データを格納し、CSVファイルに書き込む方法をされています:ここで

は私の入力はのように見えた方法です

$names = filter_input(INPUT_POST, "names"); 
$gender = filter_input(INPUT_POST, "gender"); 
$age = filter_input(INPUT_POST, "age"); 
$state = filter_input(INPUT_POST, "state"); 
$remarks = $_POST['remarks']; 

$inputArr[] = array(
    $names, $gender, $age, $state, $remarks 
); 

$fp = fopen($_SERVER["DOCUMENT_ROOT"]."/student.csv", "a+"); 

fputcsv($fp, $inputArr); 
fclose($fp); 

$inputArr出力されている以下の通りです多目的:

Array 
(
    [0] => Melinda 
    [1] => Female 
    [2] => 23 
    [3] => united state 
    [4] => Array 
     (
      [0] => Facebook 
      [1] => Newspaper Ads 
      [2] => Bus-Stop Ads 
     ) 

) 

私は配列を以下のようにしたい私は次のように出力を得るために配列をforeachの方法がわからないデータをCSVに挿入することができるが、そう:

Array 
(
    [0] => Melinda 
    [1] => Female 
    [2] => 23 
    [3] => united state 
    [4] => Array 
    [5] => Facebook 
    [6] => Newspaper Ads 
    [7] => Bus-Stop Ads 
) 
+0

あなたは、ヘッダーと小さなcsvファイルのサンプルを追加することができますか? –

+1

あなたの '$ inputArray'から' $ remark'を削除し、代わりにそれらを追加するためにarray_merge()を使います: '$ inputArray = array_merge($ inputArrray、$ remarks);'。それはすべての値を持つ1次元配列を作成するはずです。 –

+0

Btwの場合、 '$ inputArr = ... 'の代わりに' $ inputArr [] = ... 'を使用しているので、あなたのコードでは現在の配列に別のレベルが生成されます。 –

答えて

0

使用array_mergeinputArrに割り当てながらも、私はあなたが[]を必要としないと思います:

$inputArr = array_merge(array($names, $gender, $age, $state), $remarks); 
$fp = fopen($_SERVER["DOCUMENT_ROOT"]."/student.csv", "a+"); 

fputcsv($fp, $inputArr); 
fclose($fp); 
0

はちょうどそれらをプッシュする前に値をマージ:

コード:(Demo

$names="joe"; 
$gender="smith"; 
$age="18"; 
$state="WA"; 
$remarks=array('Facebook','Newspaper Ads','Bus-Stop Ads'); 

$inputArr=array_merge(array($names, $gender, $age, $state),$remarks); 
var_export($inputArr); 

出力:

array (
    0 => 'joe', 
    1 => 'smith', 
    2 => '18', 
    3 => 'WA', 
    4 => 'Facebook', 
    5 => 'Newspaper Ads', 
    6 => 'Bus-Stop Ads', 
) 
関連する問題