我试图找到答案,但没有成功,请帮忙。
我正在尝试从数据中填充多行.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);