我正在开发一个Wordpress
网站,允许用户订购x
个特定产品。我使用cookie
传递网站上订单的数据。
最初一切正常,当我致电print_r($orderArray)
时,会显示包含订单商品的array
。
但是,我的代码不再有效,因某些原因$orderArray
不再是array
。以下代码将输出NOT ARRAY
function process_order_form_handler() {
if(isset($_COOKIE['order_cookie'])){
json_encode($_COOKIE['order_cookie']);
$orderArray = json_decode($_COOKIE['order_cookie'], true);
echo $orderArray;
$orderTime = date('Y-m-d-H-i-s');
$orderContent = "Order Request Code: " . $orderTime . "<br/>";
$orderContent .= "===Order===" . "<br/>";
//Loop through the Array and print data
if(is_array($orderArray)){
foreach($orderArray as $item){
if(!array_key_exists('comment', $item)){
$orderContent .= "Stock Code: " . $item['stockCode'] . " Qty: " . $item['quantity'] . "<br/>";
}else{
$orderContent .= "Comments: " . $item['comment'];
}
}
}else{
echo "NOT ARRAY";
}
}
}
我无法弄清楚原因,我所做的唯一更改是将form action
修改为帖子的permalink
,然后检查POST
数组是否存在,如果当我遇到问题时,我会调用functions-process-order.php
中包含的方法。
任何人都可以看到为什么$orderArray
没有被视为array
?
var_dump($orderArray)
string '[{\"stockCode\":\"CBL202659/A\",\"quantity\":\"3\"},{\"stockCode\":\"CBL201764\",\"quantity\":6},{\"comment\":\"\",\"quantity\":null},{\"comment\":\"\"},{\"comment\":\"\"},{\"comment\":\"\"},{\"comment\":\"vdcvcvcv\"},{\"comment\":\"\"}]' (length=237)
print_r($_COOKIE['order_cookie']);
[{\"stockCode\":\"CBL202659/A\",\"quantity\":\"3\"},{\"stockCode\":\"CBL201764\",\"quantity\":6}]
答案 0 :(得分:2)
您正在编码但未分配给任何变量,并尝试解码,更改:
json_encode($_COOKIE['order_cookie']);
$orderArray = json_decode($_COOKIE['order_cookie'], true);
...
到
$encoded = json_encode($_COOKIE['order_cookie']);
$orderArray = json_decode($encoded, true);
echo json_last_error_msg(); //check if any error
...