我正在使用file_put_contents($file, $data);
函数将内容放入文件中,因为这些文件是在会话名称的情况下创建的, $ data 是一个多维数组,当我回应时数组打印得很好但在文件中没有内容被记录,除了数组
我应该做什么或者是否有其他自动创建文件并记录数据(数组)的功能?
谢谢。
答案 0 :(得分:27)
您希望在写入时serialize()
数组,并在阅读文件后unserialize()
。
$array = array('foo' => 'bar');
file_put_contents('foo.txt', serialize($array));
$array = unserialize(file_get_contents('foo.txt')));
哦,我现在真的不知道你如何回应阵列,但echo array('foo' => 'bar');
将始终打印Array
。
答案 1 :(得分:4)
如果您希望它具有可读性,您可以这样做:
<?php
ob_start();
print_r($data);
$textualRepresentation = ob_get_contents();
ob_end_clean();
file_put_contents($file, $textualRepresentation);
?>
答案 2 :(得分:2)
或者如果您想返回一个更易于在txt文件中读取的格式化数组,请使用print_r
如果您想捕获print_r()的输出,请使用return 参数。当此参数设置为TRUE时,print_r()将返回 而不是打印信息。
代码是:
$txt = "<pre>".print_r($data, true)."</pre>";
file_put_contents('file.txt', $txt);
答案 3 :(得分:1)
您可以serialize数组,然后在重新加载文件后使用它。您还可以将数组编码为json_encode的JSON对象并写入.json文件。
答案 4 :(得分:1)
Definetelly你可以使用var_export功能:
$contents = var_export($array, true);
file_put_contents('foo.txt', "<?php\n return {$contents};\n ?>");
// and then use something like this to get it:
$new_array = require('foo.txt');
答案 5 :(得分:1)
如果您熟悉var_dump()
的输出,更好的解决方案可能是捕获其输出并将其放入文件中,或者甚至将print_r()
如下:
ob_start();
print_r($array);
$result = ob_get_clean();
file_put_contents('file.txt', $result);
请注意,ob_get_clean()
本质上执行ob_get_contents()
和ob_end_clean()
。
答案 6 :(得分:0)
您可以设置一个递归函数,该函数可以遍历数组的每个成员,检查它本身是否为数组,如果是,则再次在该成员上调用该函数,如果不是只打印出其内容。像这样:
function file_put_contents_deep( $file, $data) {
if ( is_array( $data ) {
foreach ( $data as $item ) {
if (is_array( $item ) {
file_put_contents_deep( $file, $item );
else {
file_put_contents( $file, $item);
}
}
} else {
file_put_contents( $file, $data );
}
}
答案 7 :(得分:0)
正如最佳答案所述,使用serialize
是一个不错的选择。但是,您也可以在数组的每个项之后使用PHP_EOL
存储数组,并使用file
命令检索数组。
function file_put_array($path, $contents)
{
if (is_array($contents))
{
foreach ($contents as $item)
$str .= $item.PHP_EOL;
file_put_contents($path, $str);
return true;
}
return false;
}
并检索内容:
$contents = file($path, FILE_IGNORE_NEW_LINES);
答案 8 :(得分:-1)
$content="< ?php"."\r\n";
$str = json_encode($array);
$content.="$";
$content.="list=json_decode('";
$content.=$str;
$content.="');";
$ds=DIRECTORY_SEPARATOR;
file_put_contents(__DIR__ . $ds . 'list.php', $content);