2017-11-08 4 views
0

私は初心者のPHPです(何ヶ月も前と同じですが)。私の質問はたくさん検索しましたが、これに関する便利なソリューションやチュートリアルは見つかりませんでした。列の行を使用しないCSVへの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

+0

あなたはmysqli_fetch_assoc($結果)から返される配列上)(array_flipを試してみました - して、データを処理し続けますか? – lovelace

答えて

0

まずあなたが一緒にすべてのあなたのそれぞれのデータを保存するような方法であなたの配列を準備します。

/* 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); 
関連する問題