Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP将文本文件转换为JSON?_Php_Json - Fatal编程技术网

如何使用PHP将文本文件转换为JSON?

如何使用PHP将文本文件转换为JSON?,php,json,Php,Json,我的文本文件中有如下数据: data1 data1 data1 data1 data1 data1 data1 data1 data2 data2 data2 data2 data2 data2 data2 data2 data3 data3 data3 data3 data3 data3 data3 data3 { "data": [ [ "data1", "data1", "data1", "data1",

我的文本文件中有如下数据:

data1
data1
data1
data1
data1
data1
data1
data1
data2
data2
data2
data2
data2
data2
data2
data2
data3
data3
data3
data3
data3
data3
data3
data3
{
"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"
    ]
]
该文件可以包含任意数量的行,但数据始终位于8行部分中。 我想要的输出是有效的JSON,如下所示:

data1
data1
data1
data1
data1
data1
data1
data1
data2
data2
data2
data2
data2
data2
data2
data2
data3
data3
data3
data3
data3
data3
data3
data3
{
"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;
?>

因此,我想知道他们是否有一种更简单的方法来实现这一点,以及任何能够满足我要求的示例解决方案。主要有两件事-第一件事是不要尝试构建自己的JSON,这很快就会导致问题。第二,尝试使用一些内置函数来简化编码(代码中的注释)


你的“数据”到底是什么样子的?我这样问是因为这里你用逗号分解,但是你显示的“数据”看起来只有换行符分开,因为我有这样一个文本文件中的数据。数据实际上是这样的,出于某种原因,逗号适用于一个新的线性。实际上,逗号与新行无关。是的,我想你是对的,好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助你为自己的利益调试代码。您可能会被要求在几周/几个月内修改此代码,最终您将感谢我。