2016-09-19 46 views
1

我對PHP比較新,所以請原諒我的無知,如果這是一個容易的。PHP Array只返回一個結果到CSV

我從一個API調用中獲取結果,最終目標是將所有結果寫入一個CSV文件,除了事實上它只能將第一個數組寫入CSV文件。我知道有更多的記錄(數組),因爲當我回應結果時,我通常會得到10-15個結果。以下是我正在使用的代碼。

foreach ($list as $order) { 
$listOrders = array (
    array($order->getBuyerName(), $address['AddressLine1'], $address['AddressLine2'], $address['AddressLine3'], $address['City'], $address['StateOrRegion'], $address['PostalCode'], $orderinfo->getSKU()) 
); 
} 

$fp = fopen('order-file.csv', 'w'); 

foreach ($listOrders as $fields) { 
    fputcsv($fp, $fields); 
} 

fclose($fp); 

這裏是一個結果的樣本,但應該有大約10-15:

"TONYA","7X XX Avenue",,,"Spokane Valley",WA,99212,B123 
+1

傻冒只創建一個$ listOrders陣列與一個條目:'的foreach($列表爲$順序){$ listOrders [ ] = array($ order-> getBuyerName(),$ address ['AddressLine1'],$ address ['AddressLine2'],$ address ['AddressLine3'],$ address ['City'],$ address ['StateOrRegion '],$ address ['PostalCode'],$ orderinfo-> getSKU()); } ' –

+1

您在每次迭代中覆蓋$ listOrders。在foreach之前將其定義爲數組,然後使用Mark所說的在每個循環中添加一個新數組。 – aynber

+0

謝謝你們,有道理,你們的幫助以及下面的Jan一起解決了這個問題。 –

回答

2

您始終覆蓋$listOrders陣列每個foreach週期。要添加元素陣列,使用$listOrders[] = $var語法,所以它應該是這個樣子

$listOrders = array(); 
foreach ($list as $order) { 
    $listOrders[] = array($order->getBuyerName(), $address['AddressLine1'], $address['AddressLine2'], $address['AddressLine3'], $address['City'], $address['StateOrRegion'], $address['PostalCode'], $orderinfo->getSKU()); 
}