无法使用print_r()打印Array的内容

时间:2014-06-11 10:39:23

标签: php arrays wordpress

我正在开发一个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}]

1 个答案:

答案 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 
...