结果数组放入.txt PHP


result array put into .txt PHP

我已经有代码是什么工作,检查下面:

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

请记住,每当出现一行数据时,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数据库测试了这个,它成功地输出(到file.txt):

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

代替每次添加换行符的fputcsv,您可以使用fwrite:

$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);
}

使用内存来存储数据:

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);
}