php str_getcsv数组问题
发布时间:2020-12-13 14:15:45 所属栏目:PHP教程 来源:网络整理
导读:我上传了一个csv文件,然后使用str_getcsv解析它.一切都很好,除了我需要一种方法来循环它们.理想情况下,让阵列回来看起来很棒: Array ( [1] = Array ( [0] = 1 // first id in csv [1] = name [2] = address [3] = town [4] = state [5] = zip [6] = phone [
我上传了一个csv文件,然后使用str_getcsv解析它.一切都很好,除了我需要一种方法来循环它们.理想情况下,让阵列回来看起来很棒:
Array ( [1] => Array ( [0] => 1 // first id in csv [1] => name [2] => address [3] => town [4] => state [5] => zip [6] => phone [7] => website [8] => other [9] => other ) [22] => Array ( [10] => name [11] => address [12] => town [13] => state [14] => zip [15] => phone [16] => website [17] => other [18] => other ) [24] => Array ( [19] => name [20] => address [21] => town [22] => state [23] => zip [24] => phone [25] => website [26] => other [27] => other ) ) 但是,数据返回如下: Array ( [0] => 1 // first id in csv [1] => name [2] => address [3] => town [4] => state [5] => zip [6] => phone [7] => website [8] => other [9] => other 22 // id field [10] => name [11] => address [12] => town [13] => state [14] => zip [15] => phone [16] => website [17] => other [18] => other 24// id field [19] => name [20] => address [21] => town [22] => state [23] => zip [24] => phone [25] => website [26] => other [27] => other 有关如何修复此问题的建议,看起来像顶部的数组? $csvfile = file_get_contents($targetFile); $csv = str_getcsv($csvfile);
str_getcsv()期望作为参数传递的字符串是一条记录.
但是因为你的源文件无论如何最简单的方法是使用 fgetcsv()而不是str_getcsv() $data = array(); $fp = fopen($targetFile,'rb'); while(!feof($fp)) { $data[] = fgetcsv($fp); } fclose($fp); 自包含的例子: <?php $targetFile = 'soTest.csv'; setup($targetFile); $data = array(); $fp = fopen($targetFile,'rb'); while(!feof($fp)) { $data[] = fgetcsv($fp); } var_dump($data); function setup($targetFile) { file_put_contents($targetFile,<<< eot 1,name,address,town,state,zip,phone,website,other,other 2,other 3,other eot ); } 版画 array(3) { [0]=> array(10) { [0]=> string(1) "1" [1]=> string(4) "name" [2]=> string(7) "address" [3]=> string(4) "town" [4]=> string(5) "state" [5]=> string(3) "zip" [6]=> string(5) "phone" [7]=> string(7) "website" [8]=> string(5) "other" [9]=> string(5) "other" } [1]=> array(10) { [0]=> string(1) "2" [1]=> string(4) "name" [2]=> string(7) "address" [3]=> string(4) "town" [4]=> string(5) "state" [5]=> string(3) "zip" [6]=> string(5) "phone" [7]=> string(7) "website" [8]=> string(5) "other" [9]=> string(5) "other" } [2]=> array(10) { [0]=> string(1) "3" [1]=> string(4) "name" [2]=> string(7) "address" [3]=> string(4) "town" [4]=> string(5) "state" [5]=> string(3) "zip" [6]=> string(5) "phone" [7]=> string(7) "website" [8]=> string(5) "other" [9]=> string(5) "other" } } edit2:使用每个记录的第一个元素作为结果数组中的键: <?php $targetFile = 'soTest.csv'; setup($targetFile); $data = array(); $fp = fopen($targetFile,'rb'); while(!feof($fp)) { $row = fgetcsv($fp); $id = array_shift($row); $data[$id] = $row; } var_dump($data); function setup($targetFile) { file_put_contents($targetFile,other eot ); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |