2016-04-17 12 views
2

しかし、私は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

キーのない配列Doh!あれは何でしょう?あなたはコンマで区切られた文字列と呼ぶことができると思います。 – RiggsFolly

+0

PHPはキーのない配列を許可しません。このように '$ foo = array(" one "、" two "、" three ");'のように "キーなし"の配列を作ると、PHPは '$ foo [0] ===" 1つの "。したがって、キーなしの配列は、0から始まるインデックス配列と同じです。 – mkasberg

答えて

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に再初期化しないという点で問題があります。

+0

あなたは命を救う男です!ありがとうございました。魅力のように働いた。私はこれについて2日間机の上で頭を叩いていました。これにより、プログラムの他の部分に繰り返しコードが保存されます。 – max234435

関連する問題