Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中显示javascript中的数组_Javascript_Php_Arrays - Fatal编程技术网

在php中显示javascript中的数组

在php中显示javascript中的数组,javascript,php,arrays,Javascript,Php,Arrays,我在javascript中创建了一个数组,包含两列id和数量 items.push({ id : id, quantity: quantity }) 然后我使用stringify将其转换为jsonstring,如图所示 var jsonString = JSON.stringify(items); $.ajax({ type: "POST", url: &

我在javascript中创建了一个数组,包含两列id和数量

items.push({
            id : id,
            quantity: quantity
        })
然后我使用stringify将其转换为jsonstring,如图所示

var jsonString = JSON.stringify(items);
    $.ajax({
            type: "POST",
            url: "order_process.php",
            data: {data : jsonString}, 
            cache: false,

            success: function(){
            
                window.location.href = "order_confirmation.php";
                

            
            }
});
然后我将其发布到php,并使用json_解码将其转换为php数组。如图所示

$_SESSION['cart'] = json_decode( $_POST['data'] );
问题是,当我在php中使用print_r()函数时,这就是我得到的输出

Array ( 
    [0] => stdClass Object ( [id] => 12 [quantity] => 1 ) 
    [1] => stdClass Object ( [id] => 13 [quantity] => 1 ) 
    [2] => stdClass Object ( [id] => 10 [quantity] => 1 ) 
)
我想要的输出如下图所示,但我不知道如何格式化,所以我得到了如图所示的输出

身份证件 量 12 1. 13 2.
使用
true
作为
json\u decode()
的第二个参数来获取数组而不是对象。然后循环创建表:

$_SESSION['cart'] = json_decode( $_POST['data'], true );
echo '<table><tr><th>ID</th><th>Quantity</th></tr>';
foreach ($_SESSION['cart'] as $item) {
    echo '<tr><td>'.$item['id'].'</td><td>'.$item['quantity'].'</td></tr>';
}
echo '</table>';
$\u SESSION['cart']=json\u decode($\u POST['data'],true);
回声“IDQuantity”;
foreach($\会话['cart']作为$item){
回显“.$item['id'..”.$item['quantity'.]”;
}
回声';

您在JS中所做的并不是像在PHP中那样创建关联数组

实际上,您正在执行JSON解码时得到的操作:推送(附加到数组)一个具有两个属性的对象(大括号)

在PHP中输出数组可以执行以下操作之一:

  • 在PHP中使用您拥有的并使用对象进行迭代
  • 传递两个常规JS数组-一个带有ID,另一个带有数量

无论如何,您都需要知道如何用HTML包装数据,以便实际显示表。

@MonoConman“问题”是什么?您到底在尝试什么导致没有输出?
print\r()
用于调试,而不是为最终用户格式化信息。
foreach($\u SESSION['cart']as$item){//print table row from$item}
您正在重定向到
order\u confirmation.php
,因此,您根本不应该看到
order\u process.php
脚本的输出。很抱歉,它会转到order\u process,将其存储为会话变量,然后通过order\u确认来显示它。为什么需要数组而不是对象?您可以对
$item->id
$item->quantity
执行相同的操作,但我认为这会混淆op。因此,通过演示如何访问对象属性来消除他的混淆!我刚刚注意到他的
success
函数重定向了,所以AJAX脚本的输出甚至没有显示出来。非常感谢这对我起到了作用