所以我在php中编写了一个简单的导出csv函数,但是当涉及标题和值数组时,我有点问题。
我有一个预设数组,用户可以导出哪些列,$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));
}
感谢任何帮助。
答案 0 :(得分: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
。