Php 从csv列表创建多维数组
我认为这是一个初学者的问题。。 我找不到这样的例子,尽管这可能反映出我太天真了,不知道该搜索什么 如果我有一个字符串(逗号可以是任何其他字符): (新行使用“\r\n”) 如何将其拆分为多维数组(在本例中为2X3,但行数可能会有所不同。) 我认为这是我想要的形式(但如果不合适,请建议更好的方式!): 我得到的最接近的结果是使用$vars=explode(“\r\n”,$input); vars如下所示(在cakephp中):Php 从csv列表创建多维数组,php,csv,multidimensional-array,Php,Csv,Multidimensional Array,我认为这是一个初学者的问题。。 我找不到这样的例子,尽管这可能反映出我太天真了,不知道该搜索什么 如果我有一个字符串(逗号可以是任何其他字符): (新行使用“\r\n”) 如何将其拆分为多维数组(在本例中为2X3,但行数可能会有所不同。) 我认为这是我想要的形式(但如果不合适,请建议更好的方式!): 我得到的最接近的结果是使用$vars=explode(“\r\n”,$input); vars如下所示(在cakephp中): 谢谢如果您想将CSV数据转换为数组格式,可以用这种方法 $csv =
谢谢如果您想将CSV数据转换为数组格式,可以用这种方法
$csv = array_map('str_getcsv', file('data.csv'));
检查此参考以了解进一步的解释
若它不是来自文件,而是一个包含CSV数据的字符串,你们可以像这样做
$data = $csv_data;
$csv_data_rows = explode('\r\n',$data);
$final_array = array();
foreach($csv_data_rows as $key => $value){
$final_array[$key] = explode(',',$value);
}
return $final_array;
如果字符串不是来自文件,那么它将作为字符串变量传递。。这有区别吗?我从array_map得到消息,我的字符串需要是一个数组,而不是一个字符串..Tarun-非常感谢,但是输出不太正确:[(int)0=>[(int)0=>'58732',(int)1=>'hc_p0d 58737',(int)2=>'hc_p4 58742',(int)3=>'hc_p4a 58747',(int)4=>'hc_p4b 58752',(int)5=>'hc_p4 58757',(int)6=>'hc_p4d']您可以看到第一行已拆分为第1行和第2行(对不起,是数组元素,不是第2行)。然后数字值未从字符串值中拆分(字符串来自输入字符串中的第1行,数字来自第2行。。在使用
“\r\n”
分解字符串时,似乎未正确创建CSV字符串,因为未给出所需的结果。
(int) 0 => '58732,hc_p0d',
(int) 1 => '58737,hc_p4',
(int) 2 => '58742,hc_p4a',
(int) 3 => '58747,hc_p4b',
$csv = array_map('str_getcsv', file('data.csv'));
$data = $csv_data;
$csv_data_rows = explode('\r\n',$data);
$final_array = array();
foreach($csv_data_rows as $key => $value){
$final_array[$key] = explode(',',$value);
}
return $final_array;