只有php中的值的新数组

时间:2016-04-17 22:18:50

标签: php laravel export-to-csv

所以我在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));
        }

感谢任何帮助。

1 个答案:

答案 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