从fputcsv多维数组创建CSV [英] Create CSV from multidimensional array with fputcsv
问题描述
我试图得到一个多维数组到CSV文件中。阵列中的数据是这样:
I'm trying to get a multidimensional array into a csv file. data in the array is as such:
Array
(
[0] => Array
(
[product_id] => 1111
[name] => Alcatel One Touch Idol 2
[keyword] => alcatel-one-touch-idol-2
[options] => Array
(
[0] => Array
(
[price] => 54.0000
)
[1] => Array
(
[price] => 42.0000
)
[2] => Array
(
[price] => 10.0000
)
[3] => Array
(
[price] =>
)
[4] => Array
(
[price] =>
)
[5] => Array
(
[price] =>
)
[6] => Array
(
[price] =>
)
[7] => Array
(
[price] =>
)
[8] => Array
(
[price] =>
)
[9] => Array
(
[price] =>
)
)
)
[1] => Array
(...... etc)
我得到的所有顶级的数据,但一旦到达options数组,我得到阵列字符串转换
错误。所以,我有两个问题,我首先需要明白为什么我收到此错误,然后我需要fputcsv所有这些信息对每个产品一行。
I get all of the top level data, but then once it reaches the options array, i get Array to string conversion
errors. So i have two issue, i firstly need to see why i am getting this error, and then i need to fputcsv all of this information on one line per product.
到目前为止,我有这个解析阵列到CSV:
So far i have this to parse the array into a csv:
$output = fopen("php://output",'w') or die("Can't open php://output");
header("Content-Type:application/csv");
header("Content- Disposition:attachment;filename=product_catalog.csv");
$first_line = explode(",", $first_line);
fputcsv($output, $first_line);
foreach($csv as $file) {
fputcsv($output, $file);
}
fclose($output) or die("Can't close php://output");
如果有人可以帮助我,我会很AP preciate这一点。
问候。
If anyone could help me i'd really appreciate that. regards.
推荐答案
我会建议先压扁每个数组:
I would suggest to flatten each array first:
foreach ($csv as $file) {
$result = [];
array_walk_recursive($file, function($item) use (&$result) {
$result[] = $item;
});
fputcsv($output, $result);
}
在每次迭代中,将创建一个这样的数组:
In each iteration it would create an array like this:
[1111, 'Alcatel One Touch Idol 2', 'alcatel-one-touch-idol-2', 54, 42, ...]
这篇关于从fputcsv多维数组创建CSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!