I have a multidimensional array, currently it's only printing the array on the page. I want to be able to save it in a flat text file storing the selected checkbox information when the user submits it. There are 6 days in total.
问问题
5124 次
3 回答
12
我只是这样做:
<?php
if ($_POST)
{//always check, to avoid noticed
file_put_contents('theFilenameToWriteTo.json', json_encode($_POST));
}
?>
的好处json_encode
是它或多或少是标准的。我知道的所有语言都可以解析这种格式。如果您使用的是node.js,它可以读取数据,Java?JSON-java为您服务。Python?import json
,地狱,即使是 C++库也很容易找到。
要在 PHP 中重用该数据:
$oldPost = json_decode(file_get_contents('theFileNameToRead.json'));
//$oldPost will be an instance of stdClass (an object)
//to get an assoc-array:
$oldPostArray = json_decode(file_get_contents('sameFile.json'), true);
还有其他选项:serialize
和写入,然后是unserialize
读取。
如果您希望将该数组复制粘贴到现有的 PHP 代码中,请使用var_export
file_put_contents('theArray.txt', var_export($_POST, true));
如果您随后打开文件,它将包含一个数组,就好像它是手工编写的:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
正如 Carlos Campderrós 指出的那样,您甚至可以包含由var_export
. 重要的是要注意它var_export
不处理循环引用,但是看到你正在使用一个$_POST
数组,这不是问题在这里
回顾一下,有用的函数列表:
于 2013-08-02T11:50:43.657 回答
1
你可以使用
print_r($multiArray,true)
true 意味着我们想要捕获输出而不是打印。
数组 (PHP 5.4 )
$multiArray = [
0 => [ 'a' => 'b'],
1 => [ 'c' => 'd',
'e' => [
'f' => 'g',
'h' => 'i'
]
],
];
PHP
$file = 'array.txt';
$fh = fopen($file, 'w') or die("can't open file");
fwrite($fh, print_r($multiArray,true));
fclose($fh);
或者,如果您想稍后使用数组,可以使用 serialize() 和 unserialize()
fwrite($fh, serialize($multiArray) );
于 2013-08-02T12:13:21.177 回答
0
使用 json_encode(),将数组转换为字符串并存储。您还可以使用 json_decode() 从字符串转换回数组。
于 2013-08-02T11:52:36.893 回答