новый массив с простыми значениями в php


Поэтому я пишу простую функцию экспорта csv в php, однако у меня есть небольшая проблема, когда речь заходит о заголовках и массиве для значений.

У меня есть предустановленный массив, столбцы которого пользователь может экспортировать, который является $exportHeaders. Итак, что я пытаюсь сделать, вместо того, чтобы вводить каждое значение для $row['value for column'], я хочу создать способ сделать новый массив для вставки вместо секции $row. Однако, когда я создаю новый массив, который является $newExportHeader[] в моем случае, я получаю массив, который выглядит следующим образом (с ключом и значение):

$newExportHeader = array(
0 => $row['first_name'],
1 => $row['last_name'],
2 => $row['email'],
);
Но мне нужен массив, который не имеет ключа, связанного с ним. Итак, мой вопрос: есть ли способ сделать массив на лету без ключей в нем, только значения
protected $exportHeaders = array(
    "first_name", "last_name", "email", "street", "city", "province", "postal_code", "phone_1",
    "phone_2", "created_at", "updated_at"

);

В настоящее время это работает:

foreach ($this->user->clients()->get() as $row) {
            fputcsv($handle, array(row['first_name'], row['last_name'], row['email']));
        }

Один из вариантов, с которым я играл - не работает:

foreach ($this->user->clients()->get() as $row) {
        foreach ($this->exportHeaders as $header) {
                $newExportHeader[] = $row[$header]; <-Problem Area
            }
            fputcsv($handle, array_values($newExportHeader));
        }

Любая помощь ценится.

1 2

1 ответ:

Основываясь на вашем рабочем коде, и угадывая, что вы собираетесь делать, основываясь на вашем нерабочем коде,

Попробуйте это:

foreach ($this->user->clients()->get() as $row) {
    $transformedRow = array(); // Create a new array for the row, based on new headers.
    foreach($this->exportHeaders as $header) {
        $transformedRow[] = row[$header]; // Add to the new array for the row in the correct order.
    }
    fputcsv($handle, $transformedRow); // Add row to the csv
}

В вашем исходном коде, похоже, есть проблема в том, что вы не инициализируете заново $newExportHeader каждую итерацию внешнего цикла.