如何在php中读/写结构化数据?

时间:2012-02-14 04:15:37

标签: php data-structures

我希望读取更新插入数据来自/到以下结构中的平面文件(简单版本)并且还手动。处理它最简单的方法是什么?

$schools = array(

    "PHCS"=> array(
        "full_name"=> "Pacific Hills Christian School",
        "version"=> "4.0.2b",
        "etc"=> "etc"
      ),

    "WAC"=> array(
        "full_name"=> "Wollondilly Anglican College",
        "version"=> "4.0.1",
        "etc"=> "etc"
      ),
  );

使用YAML时,必须非常精确地使用语法和缩进,并且在vi中编辑XML也可能有点混乱。

所以我在考虑使用php数组变量?如何以上述格式保存?

4 个答案:

答案 0 :(得分:1)

好吧,如果你必须手动编辑文件,那么很难击败YAML,因为这种格式可能就像你要来的那样(在这个星球上,至少......)到“a 设计的文件格式对手工编辑很友好。“

你对“使用PHP数组变量”的思考在这里确实无关紧要,因为这些概念仅适用于程序的操作... ...在读取数据之后之后再将数据写回 out。它们与您决定使用的格式没有任何关系。

我建议你找出最容易处理的数据表示,然后围绕它编写计算机程序。此外,由于人类可能存在某些东西,该程序应该不信任其输入。如果遇到垃圾,它应该“慷慨,有意义,外交地”回应,例如:

  • “糟糕,根本无法读取该文件。”
  • “等一下:这个条目应该以三个或四个字符的大写字母名称开头,例如WAC或PACS,但是在第123456行它不会。”
  • “等一下:此条目应至少包含以下键:”full_name,“”version“和”etc.“但是行567891不会这样做。”
  • “因为我刚刚在此输入文件中发现了以下5个错误,如前所述,我特此拒绝处理它的任何部分。(因此,我没有只是软件数据库。 )“

答案 1 :(得分:1)

好吧,你可以尝试jason_encode / jason_decode

它可以帮助您格式化所有数据以进行输出。 它还有助于您管理数据。

http://php.net/manual/en/function.json-encode.php

答案 2 :(得分:1)

我想到了一些事情:

  • 序列化,例如file_put_contents($file, serialize($schools))
  • sqlite,它不是一个平面文件,但很容易上手 - 你只需要在你的数据库文件中指向PDO,然后离开。您可以通过CLI和基于Web的工具进行编辑。

编辑:啊,如果你需要通过文本编辑器进行编辑,那些将不会很好。您可以使用PHP中的格式 -

return array(

    "PHCS"=> array(
        "full_name"=> "Pacific Hills Christian School",
        "version"=> "4.0.2b",
        "etc"=> "etc"
      ),

        "WAC"=> array(
        "full_name" => "Wollondilly Anglican College",
        "version"=> "4.0.1",
        "etc"=> "etc"
    ),
  );

然后你可以在文件中弹出它并执行$schools = require($schools)它会很好地导入。我将它用于数据固定装置,效果很好。

答案 3 :(得分:0)

我使用@ Phil的解决方案php.net/manual/en/function.var-export.php

不要忘记插入

  • <?php开头并以?>
  • 结尾的PHP脚本块
  • variable name关注=

你可以使用像

这样的东西

<?php \n\n\n\$schools=\n" . var_export($schools,true) . "\n\n\n?>";