PHP fputcsv разных столбцов - PullRequest
0 голосов
/ 09 июля 2020

Я экспортирую данные в csv. У меня есть несколько массивов, которые я хочу добавить в файл csv. Я могу вставить данные в csv для первого массива.

Что я хочу, я хочу разместить данные второго массива параллельно с данными первого массива.

пример csv:

Array1:               Array2:       Array3:
1 2 3 4               a b c d       xd xy cd
5 6 7 8               e f g h       dg dy cs

Код:

$output = fopen('php://output', 'w+');


  foreach ($ofdPerCompany as $row){

    $array = array( $row->company_name, $row->countofwaybill);
    fputcsv($output, $array); // here you can change delimiter/enclosure
}

    // tell the browser it's going to be a csv file
    header('Content-Type: application/csv');
    // tell the browser we want to save it instead of displaying it
    header('Content-Disposition: attachment; filename="file.csv";');

  fclose($output);

Кто-нибудь может мне помочь, как я могу разбить csv на разные столбцы.

1 Ответ

1 голос
/ 09 июля 2020

Если у вас есть три массива с различным количеством записей, вы можете сделать следующее:

$first = [];
$second = [];
$third = [];

// Get maximum size
$maxLength = max(count($first), count($second), count($third));

// Write headers manually
fputcsv($fh, ["First", "Second", "Third"]);

for ($i = 0; $i < $maxLength; $i++) {
  // If key does not exist use empty string
  $data = [
    $first[$i] ?? "",
    $second[$i] ?? "",
    $third[$i] ?? ""
  ];

  fputcsv($fh, $data);
}
...