我有csv文本,如下所示
Keyword;Search Volume;CPC;Competition;Number of Results;Trends
shoes of ladies;90;0.00;0.00;96700000;0.11,0.11,0.11,0.22,0.11,0.11,1.00,0.11,0.11,0.11,0.11,0.11
ladys shoes;110;0.95;1.00;96800000;0.79,0.64,0.50,0.79,1.00,0.79,0.79,0.79,0.64,0.50,0.64,1.00
kadies shoes;90;1.16;1.00;116000000;0.44,1.00,1.00,0.11,1.00,0.78,0.56,0.11,0.56,0.33,0.33,1.00
shoes ladies;390;1.20;1.00;119000000;0.54,0.54,0.54,0.81,1.00,1.00,0.81,0.67,1.00,0.67,0.67,0.81
shoes for ladies;140;1.38;1.00;132000000;0.42,0.27,0.35,0.42,0.54,0.65,0.42,0.27,0.42,0.81,0.65,1.00
laddies shoes;90;2.23;1.00;76800000;0.22,0.33,0.11,0.44,0.11,0.78,0.33,0.22,0.78,0.11,0.11,1.00
ladies shoe;90;1.50;1.00;52400000;0.45,0.64,0.82,0.82,1.00,1.00,1.00,1.00,0.82,0.64,0.82,0.82
ladies shoes uk;2900;1.19;1.00;34700000;0.43,0.66,0.82,0.82,0.82,1.00,0.66,0.66,0.55,0.55,0.66,0.66
ladies black shoes;590;1.31;1.00;63600000;0.67,0.67,0.67,0.82,0.67,0.82,0.67,0.82,0.67,0.82,0.82,1.00
black ladies shoes;320;1.34;1.00;131000000;0.67,0.67,0.67,0.67,0.67,0.82,0.67,0.67,0.82,0.82,1.00,1.00
并在此; deliminator分隔我的数据。第一行是我的标题Keyword;Search Volume;CPC;Competition;Number of Results;Trends
所以共有6个标题。
我正在尝试获取如下所示的数组
array(12) {
[0]=>
array(6) {
["Keyword"]=>"shoes of ladies"
["Search Volume"]=>"90"
["CPC"]=> "0.00"
["Competition"]=> "0.11"
["Number of Results"]=> "96700000"
["Trends"]=>
array(){
[0]=>0.11,
[1]=>0.11,
[2]=>0.11
...
[]
}
[1]=>
array(6) {
["Keyword"]=>"ladys shoes"
["Search Volume"]=>"90"
["CPC"]=> "0.00"
["Competition"]=> "0.11"
["Number of Results"]=> "96700000"
["Trends"]=>
array(){
[0]=>0.11,
[1]=>0.11,
[2]=>0.11
...
[]
}
}
我正在尝试使用代码
$url = "Keyword;Search Volume;CPC;Competition;Number of Results;Trends
shoes of ladies;90;0.00;0.00;96700000;0.11,0.11,0.11,0.22,0.11,0.11,1.00,0.11,0.11,0.11,0.11,0.11
ladys shoes;110;0.95;1.00;96800000;0.79,0.64,0.50,0.79,1.00,0.79,0.79,0.79,0.64,0.50,0.64,1.00
kadies shoes;90;1.16;1.00;116000000;0.44,1.00,1.00,0.11,1.00,0.78,0.56,0.11,0.56,0.33,0.33,1.00
shoes ladies;390;1.20;1.00;119000000;0.54,0.54,0.54,0.81,1.00,1.00,0.81,0.67,1.00,0.67,0.67,0.81
shoes for ladies;140;1.38;1.00;132000000;0.42,0.27,0.35,0.42,0.54,0.65,0.42,0.27,0.42,0.81,0.65,1.00
laddies shoes;90;2.23;1.00;76800000;0.22,0.33,0.11,0.44,0.11,0.78,0.33,0.22,0.78,0.11,0.11,1.00
ladies shoe;90;1.50;1.00;52400000;0.45,0.64,0.82,0.82,1.00,1.00,1.00,1.00,0.82,0.64,0.82,0.82
ladies shoes uk;2900;1.19;1.00;34700000;0.43,0.66,0.82,0.82,0.82,1.00,0.66,0.66,0.55,0.55,0.66,0.66
ladies black shoes;590;1.31;1.00;63600000;0.67,0.67,0.67,0.82,0.67,0.82,0.67,0.82,0.67,0.82,0.82,1.00
black ladies shoes;320;1.34;1.00;131000000;0.67,0.67,0.67,0.67,0.67,0.82,0.67,0.67,0.82,0.82,1.00,1.00" ;
$lines = explode("\n", $url);
$head = str_getcsv(array_shift($lines));
$data = array();
foreach ($lines as $line) {
$data[] = array_combine($head, str_getcsv($line));
}
所以它没有给我想要的输出。任何建议请
答案 0 :(得分:2)
这应该适合你:
$head = str_getcsv(array_shift($lines), ";");
$data = array();
foreach ($lines as $line) {
$tmp = array_combine($head, str_getcsv($line, ";"));
$tmp['Trends'] = explode(",", $tmp['Trends'])
$data[] = $tmp;
}
这是解释: 如此处http://php.net/manual/en/function.str-getcsv.php所述,您忘记设置正确的删除者。这是默认情况下','你需要&#39 ;;'。
答案 1 :(得分:1)
试试这个:
$lines = explode("\n", $url);
$head = str_getcsv(array_shift($lines),";");
$data = array();
foreach ($lines as $line) {
$tempArr = str_getcsv($line,";");
$tempArr[5] = explode(",",$tempArr[5]);
$data[] = array_combine($head, $tempArr);
}