我的数据设置方式如下:
array(
0 => array(
'data_id' => 0,
'elem_value' => 'phone',
'elem_prettyname' => 'Phone Number'
),
1 => array(
'data_id' => 0,
'elem_value' => 'email',
'elem_prettyname' => 'Email Address'
),
2 => array(
'data_id' => 1,
'elem_value' => 'phone',
'elem_prettyname' => 'Phone Number'
),
3 => array(
'data_id' => 1,
'elem_value' => 'email',
'elem_prettyname' => 'Email Address'
)
)
)
我正在尝试将其转换为csv文件,如下所示:
"Data ID","Phone Number","Email Address"
0,"phone","email"
1,"phone","email"
但我无法理解我的生活。我有大量的随机数组,它们无处可去。
我应该提到elem_prettyname可以有无限数量的元素.IE不仅仅是电话号码和电子邮件地址。
有人能指出我正确的方向来正确地格式化吗?
提前致谢。
答案 0 :(得分:1)
如果您想编写csv文件,可以使用fputcsv()
待办事项
fputcsv($fp, array_keys(reset($my_array)));
使用标签ouptut第一行和
foreach($my_array as $item) {
fputcsv($fp, array_values($item));
}
输出休息。 $ fp必须是为写入而打开的文件的文件句柄。您可以使用fopen()
答案 1 :(得分:1)
您需要先将数据转换为如下所示的数组:0,"phone","email"
。
这样的事情:
$lines = array();
foreach($inTheQuestion as $row) {
if (empty($lines[$row['data_id']])) {
$lines[$row['data_id']] = array($row['data_id']);
}
$lines[$row['data_id']][] = $row['elem_value'];
}
var_dump($lines);
如果这是你想要的格式(问题中不清楚) - 那么你只需将数据转储到fputcsv
的文件中,或者简单地用fwrite转储。
答案 2 :(得分:1)
我确信有更简洁的方法可以做到这一点,但这是一个重击。它对我有用......
$array = array(
0 => array(
'data_id' => 0,
'elem_value' => 'phone',
'elem_prettyname' => 'Phone Number'
),
1 => array(
'data_id' => 0,
'elem_value' => 'email',
'elem_prettyname' => 'Email Address'
),
2 => array(
'data_id' => 1,
'elem_value' => 'phone',
'elem_prettyname' => 'Phone Number'
),
3 => array(
'data_id' => 1,
'elem_value' => 'email',
'elem_prettyname' => 'Email Address'
)
);
$string = '"Data ID","Phone Number","Email Address"' . "\n";
foreach($array as $r){
$data_id[$r['data_id']][] = $r['elem_value'];
}
foreach($data_id as $k => $d){
$string .= $k . ",\"" . implode('","',$d) . "\"\n";
}
file_put_contents('my.csv',$string);
我假设总是有电话,电子邮件 - 否则它会变得混乱。