我有一个包含数据的文本文件,我试图将所有 jpg 图像合并到一行中。这有点难以解释,但基本上我正在尝试转换这些数据。 。 .
655545047e799e01002587bc|托德|1969-10-09T14:56:48.175Z|1712415423/0.jpg 655545047e799e01002587bc|托德|1969-10-09T14:56:48.175Z|1712415423/1.jpg 655545047e799e01002587bc|托德|1969-10-09T14:56:48.175Z|1712415423/2.jpg 655545047e799e01002587bc|托德|1969-10-09T14:56:48.175Z|1712415423/3.jpg
进入此数据。 。 .
655545047e799e01002587bc|托德|1969-10-09T14:56:48.175Z|["1712415423/0.jpg","1712415423/1.jpg","1712415423/2.jpg","1712415423/3.jpg" ]
有没有办法用 php 自动执行此操作?谢谢你希望我的问题很清楚
我尝试运行 for 循环来检查用户 id“655545047e799e01002587bc”与前一个用户 id,然后获取整行并将 jpg 文件附加到 json 编码格式
你可以“手工”完成:
<?php
$input = [
'655545047e799e01002587bc|Todd|1969-10-09T14:56:48.175Z|1712415423/0.jpg',
'655545047e799e01002587bc|Todd|1969-10-09T14:56:48.175Z|1712415423/1.jpg',
'655545047e799e01002587bc|Todd|1969-10-09T14:56:48.175Z|1712415423/2.jpg',
'655545047e799e01002587bc|Todd|1969-10-09T14:56:48.175Z|1712415423/3.jpg',
];
$output = [];
array_walk($input, function($line) use (&$output) {
list($user, $name, $time, $file) = explode('|', $line);
if (!array_key_exists($user, $output)) {
$output[$user] = [
'user' => $user,
'name' => $name,
'time' => $time,
'file' => [$file],
];
} else {
$output[$user]['file'][] = $file;
}
});
foreach ($output as $entry) {
printf('%s|%s|%s|[%s]', $entry['user'], $entry['name'], $entry['time'], implode(',', $entry['file']));
}
输出显然是:
655545047e799e01002587bc|托德|1969-10-09T14:56:48.175Z|[1712415423/0.jpg,1712415423/1.jpg,1712415423/2.jpg,1712415423/3.jpg]