2016-09-19 23 views
0

私はそうではありません! PHPの開発者はまだこのタスクは私の机の上で終わった。ディストリビューターのレポートを作成する 私は自分のクエリを作成し、データを取得しています。しかし、私はクライアントにサービスすることができますCSV形式の文字列に配列を変換するのに苦労している。PHP配列からcsv文字列

私が得る結果:

array(1) { 
    [0]=> 
    object(stdClass)#351 (9) { 
    ["id"]=> 
    string(36) "cc23b3b9-7e38-11e6-b6fa-0a1bcd0d7087" 
    ["master_user_id"]=> 
    string(36) "84d55a15-5256-2ee6-1d31-8f3ccbc6f223" 
    ["company_name"]=> 
    string(7) "Tellest" 
    ["price_per_register"]=> 
    string(1) "0" 
    ["num_of_registers"]=> 
    string(1) "1" 
    ["price"]=> 
    string(5) "18625" 
    ["kickback_percent"]=> 
    string(4) "0.25" 
    ["kickback"]=> 
    string(4) "4656" 
    ["distributor_report_id"]=> 
    string(3) "260" 
    } 
} 

私はようなものの多くを試してみました:(働いていた)最初の ヘッダ

fputcsv($handle, array('id', 'master_user_id', 'company_name', 'price_per_register', 'price', 'kickback_percent', 'kickback', 'distributor_report_id'),','); 

、その後

while($row = $results->fetch()) {                                          
fputcsv(                                                
    $handle, // The file pointer                                           
    array($row['id'], $row['master_user_id'], $row['company_name'], $row['price_per_register'], $row['price'], $row['kickback_percent'], $row['kickback'], $row['distributor_report_id']), // The fields 
    ',' // The delimiter                                             
    );                                                 
}                                                  

は誰でもすることを願って私が間違ってやっていることを私にいくつかいいポインタを与えてください。 ログでこれを確認しました: 注意:PHPメッセージ:PHP致命的なエラー:/usr/share/nginx/html/src/app/Rest/Controllers/DistributorReportController.phpの配列のメンバ関数fetch()を呼び出します。ライン54

+0

$生は、アレイとの項目ではオブジェクトであるため、ループ配列は、使用してのforeachとアドレスの項目を使用して - >演算子を –

答えて

0

こんにちはThxすべて素晴らしいフィードバックです。 あなたはすべて私を正しい方向に導いてくれます。私の結果 :

$handle = fopen('php://output', 'w+');                                   
fputcsv($handle, array('id', 'master_user_id', 'company_name', 'price_per_register', 'num_of_registers' , 'price', 'kickback_percent', 'kickback', 'distributor_report_id'),','); 

$count = count($results);                                      

for($i = 0; $i < $count; $i++) {                                    
    $object = $results[$i];// iterate through the array of objects                            
    echo implode(",",$object);                                     
    echo "\n";                                         
}                                            
fclose($handle); 

私はあなたのすべてをupvotedている:)

1

にあなたはCSVファイルを取り込むために、オブジェクトを反復処理し、その後、配列からオブジェクトを抽出する必要があります:まず

$array = //a collection of what you show at the top off post - I'm assuming more than 1 member 
$count = count($array); 

for($i = 0; $i < $count; $i++) { 

    $object = $array[$i];// iterate through the array of objects 

    foreach($object as $obj) { 
     // in here populate the csv with this object's members, use object notation with -> 

     $fields = array($obj->id, $obj->master_user_id, $obj->company_name, $obj->price_per_register, $obj->price, $obj->kickback_percent, $obj->kickback, $obj->distributor_report_id); 

     fputcsv($handle, $fields, ',');// comma is the default separator 

    }//end foreach 
}//end for loop 

csvファイルは、現在人口、そうfclose()

2

まず、それを使用していますすでにarrayのように見えるので、あなたはにする必要はありません、次に、配列要素($row['id'])としてアクセスオブジェクトプロパティ($row->id)を試してみます。

foreach($results as $row){                                         
    fputcsv(                                                
     $handle, // The file pointer                                           
     array($row->id, $row->master_user_id, $row->company_name, $row->price_per_register, $row->price, $row->kickback_percent, $row->kickback, $row->distributor_report_id), // The fields 
     ',' // The delimiter                                             
     );                                                 
    } 
2

オブジェクトの配列を取得しているため、配列に対してfetchメソッドを使用することはできません。

$rows = $results->fetch(); // or whatever else you do to get the presented array :) 

foreach ($rows as $row) {                                        
    fputcsv($handle,         
    $row->id, $row->master_user_id, $row->company_name, $row->price_per_register, $row->price, $row->kickback_percent, $row->kickback, $row->distributor_report_id), ',');                                                
}    
関連する問題