您好我有一个存储产品的阵列。以下是第一个产品的示例:
$_SESSION['pricebook']['product1'] = array(
'name' => 'product1',
'description'=>'Board my Cat(s)!',
'price'=>25.95,
);
我有一个购物车阵列,用于存储用户从价格手册数组中选择的每个产品。
if(!isset($_SESSION['cart'])){
$_SESSION['cart'] = array();
}
如何将购物车写入orders.txt文件?我尝试过的所有内容都给了我“阵列通知:数组到字符串转换”错误。
注意:产品已添加到购物车中:
if (isset($_GET["product1"]) && $_GET["product1"]=="Add") {
$pid = $_GET["name"];
if (!isset($_SESSION['cart'][ $pid ])) { $_SESSION['cart'][ $pid ]; }
array_push($_SESSION['cart'][ $pid ]);
}
还有什么方法可以将它保存为人类可读格式的txt文件,如收据?
答案 0 :(得分:0)
你可以尝试:
$handle = fopen('orders.txt', 'w+'); // change this based on how you would like to update the file
fwrite($handle, print_r($_SESSION['cart']), true);
fclose($handle);
答案 1 :(得分:0)
您可以使用PHP serialize()
进行此操作。
生成值的可存储表示。
这对于存储或传递PHP值非常有用,而不会丢失其类型和结构。
要再次将序列化字符串转换为PHP值,请使用
unserialize()
。
要保存,您的代码可能如下所示
$representation = serialize($_SESSION['cart']);
// save $representation to your txt file/whatever
并加载值,只需按照手册中的说明进行操作
// load data into $representation
$_SESSION['cart'] = unserialize($representation);
如果您想要更漂亮的格式,可以使用json_encode()
设置JSON_PRETTY_PRINT
标记
$representation = json_encode($_SESSION['cart'], JSON_PRETTY_PRINT);
// save $representation to your txt file/whatever
// load data into $representation
$_SESSION['cart'] = json_decode($representation);
答案 2 :(得分:0)
使用serialize
或json_encode
。
你可以像这样使用serialize()
$t = serialize($_SESSION['cart']);
file_put_contents('filename.txt', $t);
或者json_encode()
$t = json_encode($_SESSION['cart']);
file_put_contents('filename.txt', $t);
serialize
可以稍微快一点,但是特定于PHP,而json_encode
会生成一个JSON字符串,可以输入任何东西,包括烤面包机:D JSON字符串也会留下一个比序列化的足迹更小。