PHP将二维数组放入文件中

时间:2013-07-22 03:24:18

标签: php arrays

请告诉我如何将二维数组保存到文本文件中

如果我的索引值中包含未知元素数的数组:

$two_darray[unknown][unknown];

4 个答案:

答案 0 :(得分:4)

您只需要序列化此数组。您可以将其包装在serialize()中并将其输出到文件中。然后,您可以稍后使用unserialize()对其进行解码。

为了便于携带,我推荐使用JSON代替json_encode() / json_decode()

file_put_contents('someFile.json', json_encode($yourArray));

答案 1 :(得分:3)

实际上,@ Brad和@Hilmi的答案是正确的,但我不确定只使用JSON是一个很好的建议。

您可以选择

<强> JSON

写:file_put_contents('someFile.json', json_encode($two_darray));

阅读:$two_darray = json_decode(file_get_contents('someFile.txt'));

<强> XML

this answer

序列化数据

写:file_put_contents('someFile.txt', serialize($two_darray));

阅读:$two_darray = unserialize(file_get_contents('someFile.txt'));

CSV (与MS Excel或某些数据库配合使用)

$handler = fopen('someFile.csv', 'w+');
foreach ($two_darray as $one_darray) {
    fputcsv($handler, $one_darray);
}

使用fgetcsv

阅读

甚至 SQLite

$db = new SQLiteDatabase('someFile.sqlite');
foreach ($two_darray as $one_darray) {
    $db->query("INSERT INTO `MyTable` VALUES (".implode(',', $one_darray).")");
}

阅读:$two_darray = $db->sqlite_array_query("SELECT * FROM MyTable");

编辑二进制(对于.zip或.tar.gz)

尝试pack()

答案 2 :(得分:0)

您可以将serialize数组转换为字符串并将其保存到文件中,当您希望该数组仅通过unserializing文件的内容时,您将拥有该数组

答案 3 :(得分:0)

<?php
$arr = array( array('aa', 'aa'), array('bb','bb') );
file_put_contents('/tmp/test',serialize($arr));
var_dump(unserialize(file_get_contents('/tmp/test')));
?>

您也可以使用json_encode / json_decode代替序列化/反序列化,如上面的@Brad建议