使用 PHP 组合文本文件中的数据

问题描述 投票:0回答:1

我有一个包含数据的文本文件,我试图将所有 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 json text-files
1个回答
0
投票

你可以“手工”完成:

<?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]

© www.soinside.com 2019 - 2024. All rights reserved.