我在这样的文本文件中有数据:
data1
data1
data1
data1
data1
data1
data1
data1
data2
data2
data2
data2
data2
data2
data2
data2
data3
data3
data3
data3
data3
data3
data3
data3
文件可以包含任意数量的行,但是数据始终位于8行部分中。我想要的输出是有效的JSON,如下所示:
{
"data": [
[
"data1",
"data1",
"data1",
"data1",
"data1",
"data1",
"data1",
"data1"
],
[
"data2",
"data2",
"data2",
"data2",
"data2",
"data2",
"data2",
"data2"
],
[
"data3",
"data3",
"data3",
"data3",
"data3",
"data3",
"data3",
"data3"
]
]
}
我曾尝试设计一个php脚本来做到这一点,但是我对PHP绝望了,我几乎是他们的朋友,但无法正确设置格式。
$tdcount = 1; $numtd = 8; // number of cells per row
$str = "{
\"data\": [
";
$f = fopen("data.txt", "r");
if ( $f === FALSE ) {
exit;
}
while (!feof($f)) {
$arrM = explode(",",fgets($f));
$row = current ( $arrM );
if ($tdcount == 1)
$str .= "["; $str .= "\"$row\"";
if ($tdcount == $numtd) {
$str .= "]";
$tdcount = 1;
} else {
$tdcount++;
}
}
$str .= "] ] }";
echo $str;
exit;
?>
因此,我想知道他们是否更容易做到这一点,并且满足我要求的任何示例解决方案都很好。
2件事-首先是不要尝试构建自己的JSON,这会很快导致问题。其次是尝试使用一些内置函数来简化编码(代码中的注释)...
$numtd = 8;
// read the file into an array
$data = file("data.txt", FILE_IGNORE_NEW_LINES );
// use trim to remove any spaces
$data = array_map("trim", $data);
// array_chunk to split it into parts, output with json_encode
echo json_encode( ["data" => array_chunk($data, $numtd)], JSON_PRETTY_PRINT );