我试图将下面的数组转换为.csv文件,其中问题将在第一行,相应的答案在第二行,在开始时,时间戳应该与时间在沿着。
我试过以下几种方法:
<?php
$qna = [
[
"questionNo"=> 1,
"question"=> "I am the life of the party.",
"answer"=> 2
],
[
"questionNo"=> 2,
"question"=> "I feel little concern for others.",
"answer"=> 4
],
[
"questionNo"=> 3,
"question"=> "I am always prepared.",
"answer"=> 2
],
[
"questionNo"=> 4,
"question"=> "I get stressed out easily.",
"answer"=> 4
]
];
$csv = '/home/ankur/Desktop/iq_data.csv';
$fp = fopen( $csv , 'w' );
$questionarray = array();
$answerarray = array();
$keyarray = array();
$valuearray = array();
foreach( $qna as $key => $questions) {
$questionarray[] = $questions['question'];
$answerarray[] = $questions['answer'];
}
$keyarray[] = "Timestamp";
$valuearray[] = time();
$row = array();
array_push($row,$keyarray);
array_push($row,$valuearray);
array_push($row,$questionarray);
array_push($row,$answerarray);
for($i=0; $i < count($row); $i++) {
fputcsv($fp, $row[$i] );
}
fclose( $fp );
?>
它正在创建.csv文件,但时间戳及其值与问题答案不在同一行,如下所示:
Timestamp
1676484864
I am the life of the party. I feel little concern for others. I am always prepared. I get stressed out easily.
2 4 2 4
我希望Timestamp列与问题列在同一行中,如下所示:
Timestamp I find it hard to imitate the behavior of other people. My behavior is usually an expression of my true inner feelings, attitudes, and beliefs.
12/3/21 14:05 TRUE TRUE
如果可能的话,请建议我在哪里做错了。
1条答案
按热度按时间wrrgggsh1#
您只需要在csv文件中插入两行代码,因此您只需要循环
$qna
数组来填充两个平面数组。您可以使用静态单词“Timestamp”预填充第一个数组的第一个元素,使用当前UNIX时间预填充第二个数组的第一个元素。
然后循环
$qna
数组,将问题和答案推入各自的数组中,我使用的是无主体循环,但如果愿意,也可以在foreach循环主体中执行推入数组的操作。填充完两个数组后,使用
fputcsv()
正确写入csv文件。