новый массив с простыми значениями в 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 ответ:
Основываясь на вашем рабочем коде, и угадывая, что вы собираетесь делать, основываясь на вашем нерабочем коде,
Попробуйте это:
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
каждую итерацию внешнего цикла.