PHP用变量构建数组

时间:2018-07-12 00:28:31

标签: php arrays variables

我想构建一个数组以使用变量创建CSV文件。 $ arraybuild变量将从搜索中收集行,因此永远不会有相同数量的行。

$arraybuild = "'aaa,bbb,ccc,dddd',";
$arraybuild .= "'123,456,789',";
$arraybuild .= "'\"aaa\",\"bbb\"'";

$list = array
(
    $arraybuild
)
;

$file = fopen("contacts.csv","w");

foreach ($list as $line)
  {
  fputcsv($file,explode(',',$line));
  }

fclose($file);

问题是结果没有将行分开,而是将它们全部放在同一行中。

我想得到

aaa,bbb,ccc,dddd 123,456,789 “ aaa”,“ bbb”

我得到的是

aaa bbb ccc dddd 123456789“ aaa”“ bbb”

全部在单独的列中

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

将每行推到一个数组中,而不是连接成一个字符串,然后循环并添加到csv

$arraybuild[] = "'aaa,bbb,ccc,dddd',";
$arraybuild[] = "'123,456,789',";
$arraybuild[] = "'\"aaa\",\"bbb\"'";

$file = fopen("contacts.csv","w");

foreach ($arraybuild as $line) {
    fputcsv($file, explode(',', $line));
}

fclose($file);

答案 1 :(得分:1)

在您的代码中,您正在将所有值连接到一个字符串,并用,分隔。之后,您将创建一个数组,其中包含一个元素(该长字符串)。

因此,您将所有这些都放在同一行上就不足为奇了。

要分隔行,应在$list数组内创建单独的数组。每个包含的数组都将在新行上。

尝试一下:

<?php

$arraybuild1 = "'aaa,bbb,ccc,dddd',";
$arraybuild2 = "'123,456,789',";
$arraybuild3 = "'\"aaa\",\"bbb\"'";

$list = array
(
    explode(',', $arraybuild1),
    explode(',', $arraybuild2),
    explode(',', $arraybuild3)
);

$file = fopen("contacts.csv", "w");

foreach ($list as $fields) {
    fputcsv($file, $fields);
}

fclose($file);