我正在尝试从csv中读取数组值并创建属于主键字段ID的子数组。例如,我说我有以下阵列结构&内容...
ID;号码;产品
1; K12;产品1
2; 157/03/2014;产品1
2 ;;产品2
2;产品1
3; 156/03/2014;产品2
3; 156/03/2014;产品3
我有一个php函数:
function csv_to_array($file, $delimiter=';')
{
if(!file_exists($file) || !is_readable($file))
return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($file, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
这样的结果想要实现
[1] => Array
(
[LP] => 1
[number] => K12
[product] => product1
)
[2] => Array
(
Array
(
[LP] => 2
[number] => 157/03/2014
[product] => product1
)
Array
(
[product] => product2
)
Array
(
[product] => product3
)
答案 0 :(得分:1)
替换
data[] = array_combine($header, $row);
使用
if(isset($data[$row[0]])) {
$data[$row[0]][] = array_combine($header, $row);
}
else {
$data[$row[0]] = array();
$data[$row[0]][] = array_combine($header, $row);
}
答案 1 :(得分:0)
应该工作:
//$data[] = array_combine($header, $row);
if(isset($data[$row[0]])) {
array_push($data[$row[0]], array('product' => $row[2]));
} else {
$data[$row[0]] = array_combine($header, $row);
}