2012-01-30 79 views
0

有人可以告诉我如何轻松格式数组与这样的值? 我有一个CSV与值文件象下面这样:如何将CSV格式化为阵列?

27383,15.99 
80448,19.99 
132876,11.99 
150438,120 

这是格式,我想:

$array[0]['id'] = 27838 
$array[0]['price'] = 15.99 
$array[1]['id'] = 80448 
$array[2]['price'] = 19.99 

我现在拥有的是:

$data = file_get_contents('id_and_price.csv'); 
$data = explode(',', $data); 
print_r($data); 

//foreach($data as $d) { 
// echo $d; 
//} 

回答

3
<?php 
$f = fopen('filename', 'r'); 
$arr = array(); 
while ($l = fgetcsv($f)) { 
    $arr[] = array_combine(array('id', 'price'), $l); 
} 
var_dump($arr); 
?> 
0

你需要使用php爆炸... http://php.net/manual/en/function.explode.php

$csv = "piece1,piece2,piece3,piece4,piece5,piece6"; 
$array = explode(",", $csv); 
echo $array[0]; // piece1 
echo $array[1]; // piece2 
+0

只注意到你AREADY有这个!我会建议你是否拥有2个首要位置,以尝试检测奇数/均衡。设置一个计数$ i = 0。然后使用if($ i%)来检测奇怪的nunbrs并使用它来修改你的数组键 – Nick 2012-01-30 21:39:52

4

你可以用fgetcsv()做到这一点很容易:

$arr = array(); 
$header = array('id', 'price'); 

$file = fopen('id_and_price.csv', 'r'); 
while($item = fgetcsv($file)) 
{ 
    $arr[] = array_combine($header, $item); 
} 

print_r($arr);