fputcsv,将多个数组放入一行或一列中



我试图找到答案,但没有成功,请帮忙。

我正在尝试从数据中填充多行.txt方法是preg_match data.csv中的单行或单列。它需要在单个数组中,因为我只需要唯一的数字。->或任何其他选项仅获取唯一编号

我无法将数组合并到单个数组并像一个数组到单行一样填充它。对于任何建议,我将非常高兴。

这是我的简化代码:

$filename = 'data.txt';
$fupids = array ();
$handle = fopen($filename, "r");
if (!$handle) exit;
    while (($line = fgets($handle)) !== false) {
        if (preg_match_all('/([0-9]{8})/',$line,$output)) {
            $fupid = $output[0];
            $file = fopen('data.csv', 'a+');
            fputcsv($file, array_unique($output[0]));           
        }
    }
fclose($file);

这是我的简化数据.txt :

10153231,10159512,10159512,10159512
10141703,10160541,10160541
10165815,10158007,10158007

当前 CSV 输出 :

10153231,10159512
10141703,10160541
10165815,10158007

理想的输出只有一行,或者更好的一列,如下所示:

10153231,10159512,10141703,10160541,10165815,10158007

谢谢大家的帮助。

也许是这样的(未经测试(:(想法:重复的键被array_merge覆盖(

$filename = 'data.txt';
$fupids = [];
if ( false === $hin = fopen($filename, 'r') )
    throw new Exception('unable to open input file');
if ( false === $hout = fopen('data.csv', 'a+') )
    throw new Exception('unable to open output file');
while ( false !== $fields = fgetcsv($hin) ) {
    $fupids = array_merge($fupids, array_flip($fields));
}
fclose($hin);
fwrite($hout, implode(',', array_keys($fupids)));
fclose($hout);

相关内容

  • 没有找到相关文章

最新更新