结果数组放入.txt PHP

时间:2015-09-17 23:35:34

标签: php arrays

我已经有了正常工作的代码,请查看以下内容:

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {

if($h = fopen('file.txt', 'a')) {

fputcsv($h,$row);

fclose($h);

}
}

在这种情况下输出:

11:11:11:11:11:11
22:22:22:22:22:22
33:33:33:33:33:33

我需要输出:

11:11:11:11:11:11,22:22:22:22:22:22,33:33:33:33:33:33

3 个答案:

答案 0 :(得分:0)

您可以使用fwrite:

,而不是使用每次都添加换行符的fputcsv
$h = fopen('file.txt', 'a')
if ($h) {
  $count = 0;
  while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    if ($count !== 0) {
      fwrite($h, ',');
    }
    fwrite($h, $row);
    $count++;
  }
  fclose($h);
}

答案 1 :(得分:0)

它使用内存来存储数据:

if($h = fopen('file.txt', 'a')) {

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {

$rows[] = join(":", $row);

}

$data = join(",", $rows);

fwrite($h,$data);
fclose($h);

}

答案 2 :(得分:0)

请记住,你的while循环每次都会迭代一行数据。通常,您希望避免打开文件,写入文件,然后关闭文件,打开,写入,关闭等...

通常,将所有数据聚集在一起然后编写它是个好主意。

此外,fputcsv()仅在单个数组值上添加逗号。

解决方案是将所有内容添加到一个数组中,然后运行fputcsv():

while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    $data[] = $row['mac'];
}

if($h = fopen('file.txt', 'a')) {

    fputcsv($h,$data);

    fclose($h);
}

注意:您需要将$ row ['mac']中的'mac'替换为mySQL列名

我用mysql db测试了它,并成功输出(到file.txt):

11:11:11:11:11:11,22:22:22:22:22:22,33:33:33:33:33:33