【问题标题】:PHP Building an array with variablesPHP 使用变量构建数组
【发布时间】:2018-12-20 02:30:34
【问题描述】:

我想构建一个数组来使用变量创建一个 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 123 456 789 "aaa" "bbb"

全部在单独的列中

有人可以帮忙吗?

【问题讨论】:

  • 您希望得到什么结果?此时,您有一个包含一个项目的数组,您将其写为一行。
  • 嗨,我刚刚调整了问题以显示我想要的内容。谢谢@zerkms

标签: php arrays variables


【解决方案1】:

将每一行推送到一个数组而不是连接到一个字符串,然后循环并添加到 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);

【讨论】:

  • RenegadeRob:如果您对这个答案感到满意,您可以将其标记为已接受的答案,让社区知道您的问题已得到解答,并以此归功于 Erwin。
【解决方案2】:

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

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

要分隔行,您应该在 $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);

【讨论】:

  • 这很好,但实际的 $arraybuild 在循环中为 CSV 添加行。所以我不能重命名循环中的每个变量,因为它永远不会是相同的数量。
  • 当然,这里的变量只是举例。 @Erwin 的答案可能更具体到您正在寻找的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 2011-04-10
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多