1

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.

4

3 回答 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 回答