Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从csv列表创建多维数组_Php_Csv_Multidimensional Array - Fatal编程技术网

Php 从csv列表创建多维数组

Php 从csv列表创建多维数组,php,csv,multidimensional-array,Php,Csv,Multidimensional Array,我认为这是一个初学者的问题。。 我找不到这样的例子,尽管这可能反映出我太天真了,不知道该搜索什么 如果我有一个字符串(逗号可以是任何其他字符): (新行使用“\r\n”) 如何将其拆分为多维数组(在本例中为2X3,但行数可能会有所不同。) 我认为这是我想要的形式(但如果不合适,请建议更好的方式!): 我得到的最接近的结果是使用$vars=explode(“\r\n”,$input); vars如下所示(在cakephp中): 谢谢如果您想将CSV数据转换为数组格式,可以用这种方法 $csv =

我认为这是一个初学者的问题。。 我找不到这样的例子,尽管这可能反映出我太天真了,不知道该搜索什么

如果我有一个字符串(逗号可以是任何其他字符):

(新行使用“\r\n”)

如何将其拆分为多维数组(在本例中为2X3,但行数可能会有所不同。)

我认为这是我想要的形式(但如果不合适,请建议更好的方式!):

我得到的最接近的结果是使用$vars=explode(“\r\n”,$input); vars如下所示(在cakephp中):


谢谢

如果您想将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;