gpt4 book ai didi

PHP 数组到 CSV 使用列而不是行上的标题

转载 作者:行者123 更新时间:2023-11-29 18:13:57 25 4
gpt4 key购买 nike

我是一名 PHP 新手(几个月前),我搜索了很多有关我的问题的信息,但找不到有关此问题的有用解决方案或教程。

我已经为 PHP CSV 输出创建了代码,输出显示在 CSV 中的行列表中,但它们位于行部分(它们是正确的并且工作正常)我正在寻找更多将行更改为列

我已经搜索过,但尚未找到任何有用的资源。

我希望你能给我提供一些教程或解决方案或建议来让我自己实现它。由于我是新手,请提供易于实现的解决方案。

这是我编写的代码,它工作正常

<?php

// Database Connection
include ('../sql/mainSql.php');

// filename for export
$csv_filename = 'Total_Settlement_UK_'.date('Y-m-d').'.csv';

// get Users
$query = "SELECT settlement_id, settlement_start_date,settlement_end_date,total_amount FROM settlements WHERE total_amount";
if (!$result = mysqli_query($conn, $query)) {
exit(mysqli_error($conn));
}

$users = array();
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$users[] = $row;
}
}

header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=".$csv_filename."");
$output = fopen('php://output', 'w');
fputcsv($output, array('settlement_id', 'settlement_start_date', 'settlement_end_date', 'total_amount'));

if (count($users) > 0) {
foreach ($users as $row) {
fputcsv($output, $row);
}
}
?>

结果很好,你可以看到截图。

Screenshot1

但是,我希望将此行标题放入列标题中。

Screenshot2

最佳答案

首先准备数组,将所有各自的数据存储在一起。

/* Prepare your final array */
$userDetails = [
'settlement_id' => [],
'settlement_start_date' => [],
'settlement_end_date' => [],
'total_amount' => []
];

/* This will store the data to particular column, if no data is set then will set empty by default */
while ($row = mysqli_fetch_assoc($result)) {
$newArray['settlement_id'][] = (isset($row['settlement_id'])) ? $row['settlement_id'] : '';
$newArray['settlement_start_date'][] = (isset($row['settlement_start_date'])) ? $row['settlement_start_date'] : '';
$newArray['settlement_end_date'][] = (isset($row['settlement_end_date'])) ? $row['settlement_end_date'] : '';
$newArray['total'][] = (isset($row['total'])) ? $row['total'] : '';
}

下面是例子

<?php

$resultArray = [
[
'settlement_id' => 1,
'settlement_start_date' => '2017-01-01',
'settlement_end_date' => '2018-01-01',
'total' => 2015
],
[
'settlement_id' => 2,
'settlement_start_date' => '2017-01-01',
'settlement_end_date' => '2018-01-01',
'total' => 2016
],
[
'settlement_id' => 3,
'settlement_start_date' => '2017-01-01',
'settlement_end_date' => '2018-01-01',
'total' => 2017
],
[
'settlement_id' => 4,
'settlement_start_date' => '2017-01-01',
'settlement_end_date' => '2018-01-01',
'total' => 2018
],
[
'settlement_id' => 5,
'settlement_start_date' => '2017-01-01',
'settlement_end_date' => '2018-01-01',
'total' => 2019
]
];

$newArray = [
'settlement_id' => [],
'settlement_start_date' => [],
'settlement_end_date' => [],
'total' => []
];

foreach($resultArray as $result){
$newArray['settlement_id'][] = (isset($result['settlement_id'])) ? $result['settlement_id'] : '';
$newArray['settlement_start_date'][] = (isset($result['settlement_start_date'])) ? $result['settlement_start_date'] : '';
$newArray['settlement_end_date'][] = (isset($result['settlement_end_date'])) ? $result['settlement_end_date'] : '';
$newArray['total'][] = (isset($result['total'])) ? $result['total'] : '';
}

echo '<pre>';
print_r($newArray);

关于PHP 数组到 CSV 使用列而不是行上的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47179967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com