将CSV数组 [英] Converting CSV to array

查看:103
本文介绍了将CSV数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个数组机场codeS和城市名称(约3500线)。

  code,城市
阿比林,TX,ABI
埃达克岛,AK,ADK
Akiachak,AK,KKI
阿基亚克,AK,AKI
阿克伦/广东,OH,CAK
Akuton,AK,KQA
阿拉卡鲁克,AK,AUK
阿拉莫戈多,NM,ALM

我需要将该文件转换成一个PHP数组。这是我的code迄今:

  IF(($处理=的fopen('test.csv','R'))!== FALSE){
    而(($数据= fgetcsv($处理,1000,',',''))!== FALSE){
        呼应'< pre>';
            的print_r($数据);
            呼应'< / pre>';
    }
    FCLOSE($处理);
}

虽然我设置的分隔符,enclousure个字符fgetcsv功能,即时得到这个结果:

 阵列

    [0] => code
    [1] =>市
阿比林
    [2] => TX
    [3] => ABI
埃达克岛
    [4] => AK
    [5] => ADK
Akiachak
    [6] => AK
    [7] => KKI
阿基亚克
    [8] => AK
    [9] => AKI
阿克伦/广东
    [10] => OH
    [11] => CAK
Akuton
    [12] => AK
    [13] => KQA
阿拉卡鲁克
    [14] => AK
    [15] => AUK
阿拉莫戈多
    [16] => NM
    [17] => ALM


解决方案

如果它的换行符,你可以尝试穷举法:

  $文件=的file_get_contents(test.csv);
$数据= array_map(str_getcsv,preg_split('/ \\ R * \\ N + | \\ R + /',$文件));
的print_r($数据);

str_getcsv 是可用的PHP 5.3,或变通方法手册中,通过 upgradephp 或的 PHP_Compat

I have this array with airport codes and city names (around 3500 lines).

code,city
"Abilene, TX ",ABI
"Adak Island, AK ",ADK
"Akiachak, AK ",KKI
"Akiak, AK ",AKI
"Akron/Canton, OH ",CAK
"Akuton, AK ",KQA
"Alakanuk, AK ",AUK
"Alamogordo, NM ",ALM

I need to convert that file into a php array. This is my code so far:

if(($handle = fopen('test.csv', 'r')) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',', '"')) !== FALSE) {
        echo '<pre>';
            print_r($data);
            echo '</pre>';
    }
    fclose($handle);
}

Although I'm setting the delimiter and enclousure characters for the fgetcsv function, im getting this as a result:

Array
(
    [0] => code
    [1] => city
"Abilene
    [2] => TX "
    [3] => ABI
"Adak Island
    [4] => AK "
    [5] => ADK
"Akiachak
    [6] => AK "
    [7] => KKI
"Akiak
    [8] => AK "
    [9] => AKI
"Akron/Canton
    [10] => OH "
    [11] => CAK
"Akuton
    [12] => AK "
    [13] => KQA
"Alakanuk
    [14] => AK "
    [15] => AUK
"Alamogordo
    [16] => NM "
    [17] => ALM
)

解决方案

If it's the linebreaks, you can try the brute-force method with:

$file = file_get_contents("test.csv");
$data = array_map("str_getcsv", preg_split('/\r*\n+|\r+/', $file));
print_r($data);

str_getcsv is available with PHP 5.3, or as workaround in the manual, via upgradephp or PHP_Compat.

这篇关于将CSV数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆