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

Parse string from array to use in 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;;;;'

接下来我将使用简单的方法将此数组放入 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 => 字符串 '45.00;5600.00;677.78;45.00;454.00;;;;'

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

我认为您应该 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);

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