在CSV文件中调整单元格数据,PHP

时间:2015-10-24 20:30:56

标签: php csv

我正在使用此

以CSV格式编写标题
 fputcsv($fp, $columns);

它将标题写入CSV,如下所示

 AED   AFN  ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BRL BSD BTC BTN BWP BYR BZD CAD CDF CHF CLF CLP CNY COP CRC CUC CUP CVE CZK DJF DKK DOP DZD EEK EGP ERN ETB EUR FJD FKP GBP GEL GGP GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG HUF IDR ILS IMP INR IQD IRR ISK JEP JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LTL LVL LYD MAD MDL MGA MKD MMK MNT MOP MRO MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLL SOS SRD STD SVC SYP SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD UYU UZS VEF VND VUV WST XAF XAG XAU XCD XDR XOF XPF YER ZAR ZMK ZMW ZWL

以上数据位于$ columns数组中。 使用上述数据有168列。

现在我使用for循环来获取数据

 $num_records=count($columns);
 for($z=1;$z<$num_records;$z++){
 $rowData=fetchData($columns[$z] ,$columns[$z],1);
 fputcsv($fp, $rowData);
 }

这是fetchData函数

function fetchData($from,$to,$amount){
$access_key = 'MYKEY';
$endpoint = 'live';
    // initialize CURL:
    if($from=="GNF"){
    $url='http://apilayer.net/api/'.$endpoint.'?access_key='.$access_key.'&from='.$from.'&to='.$to.'&amount='.$amount.'&source='.$from."";
                $ch = curl_init($url);   
                //echo $url;exit;
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

                // get the (still encoded) JSON data:
                $json = curl_exec($ch);
                curl_close($ch);
                // Decode JSON response:
                $conversionResult = json_decode($json, true);
                $tmpArray=$conversionResult['quotes'];
                if($from=="")
                $from="USD";
                array_unshift($tmpArray, $from);
            }
            return $tmpArray;
    }

对于GNF,它返回166个数据。意味着少于标题。 现在我的问题是因为GNF数组有166个转换,而我们有168个列。 所以它没有按照CSV中的标题显示。 请告诉我如何解决这个问题,以便根据标题显示数据。

这是生成的CSV。您可以看到它没有正确显示数据。

https://www.dropbox.com/s/oo0a6ni4xkebat9/currency.csv?dl=0&s=sl

1 个答案:

答案 0 :(得分:0)

您错过了2列,因为您的FOR循环price忽略了元素[0]和最后一个元素[167]。这应该解决:

resdential