从数组中解析字符串以在csv中使用

时间:2015-02-11 13:46:05

标签: php csv

我生成一个记录如下的数组:

315 => 
array (size=3)
  0 => string 'Bangkok ICD' (length=11)
  1 => string '[pc_315]' (length=8)
  2 => string '45.00;5600.00;677.78;45.00;454.00;;;;'

接下来我使用简单的mathod将此数组放入csv:

private function fill_file_data($list)
{
    $file = $this->csv_file_path."/tariff_{$this->freight_tariff->id}_matrix.csv";
    if(!file_exists($file))
    {
        file_put_contents($file, "");
    }
    $file_handler = fopen($file, 'w');
    foreach($list as $fields)
    {
        fputcsv($file_handler, $fields, $this->delimiter, $this->separator);
    }
    fclose($file_handler);
    return;
}

但这部分存在问题: 2 => string '45 .00; 5600.00; 677.78; 45.00; 454.00 ;;;;'

我用分号分隔,但fputcsv将其视为字符串。有没有办法将此部分读作csv collumns?

1 个答案:

答案 0 :(得分:2)

我认为您应该explode ;字符串并将此值添加为新的数组元素,例如

$arr = array(
    'Bangkok ICD',
    '[pc_315]',
    '45.00;5600.00;677.78;45.00;454.00;;;;'
);
$new_values = explode(';', $arr[2]);
// now we remove string '45.00;5600.00;677.78;45.00;454.00;;;;'
unset($arr[2]);
$arr = array_merge($arr, $new_values);

之后,您可以将此项目传递给您的方法。