我将一些json格式的数据发布到php脚本,这些数据需要替换会话(数组)中的现有数据。
这是我发布到我的PHP脚本的内容:
Array
(
[0] => stdClass Object
(
[product] => Bad 1
[quantity] => 2
)
[1] => stdClass Object
(
[product] => Bad 14
[quantity] => 1
)
)
这是我的会话数组($_SESSION['cart']
):
Array
(
[Bad 1] => Array
(
[artikelid] => 2
[product] => Bad 1
[price] => 1000
[picture] => cms/images/bad.jpg
[quantity] => 2
[alias] => bad1
[catalias] => baden
)
[Bad 14] => Array
(
[artikelid] => 11
[product] => Bad 14
[price] => 800
[picture] => images/defaultimage.jpg
[quantity] => 1
[alias] => bad-14
[catalias] => baden
)
)
我希望发布的数量值替换会话数组中的数量值,但仅限于正确的产品库。所以,如果我发布数量' 10'产品'坏1'只有关键数量不好1'需要用该值替换。
当发布多个产品时,例如我的例子(发布的对象)也会这样。
如何将对象更改为数组并将其与我的会话数组合并(仅替换数量)?
我试过类似的东西,但这仅适用于一个已发布的值。
//Wanneer er een post waarde is vanaf het ajax script:
if($_POST['product']){
//Stop de productnaam in de variabele $prod
$prod = $thisProduct['product'] ;
//Als er nog geen sessie bestaat, maak deze dan aan
if (!isset($_SESSION['cart'])) {
//en maak er gelijk een array van
$_SESSION['cart'] = [];
}
//Als de productnaam nog niet voorkomt in de sessie, voeg deze dan toe inclusief de overige array waarden
if (!isset($_SESSION['cart'][$prod])) {
$_SESSION['cart'][$prod] = $thisProduct;
}
//Als deze wel voorkomt voeg hem dan niet toe maar tel de quantity op bij het bestaande product
else {
$_SESSION['cart'][$prod]['quantity'] += $thisProduct['quantity'];
}
}
我在Don's Panic的帮助下解决了这个问题:
$quantityobject = $_POST['quantityobject'];
$arrayquantity = json_decode($quantityobject);
foreach ($arrayquantity as $object) {
// Check if product exists in array
if (isset($_SESSION['cart'][$object->product])) {
// if so replace quantity with posted one
$_SESSION['cart'][$object->product]['quantity'] = $object->quantity;
}
}
答案 0 :(得分:1)
我认为它看起来比你制作它简单一些。您不必将对象转换为数组并合并它们。您可以按原样使用它们,只需迭代对象数组并更新相应产品的会话数据。
foreach ($posted_data as $object) {
$_SESSION['cart'][$object->product]['quantity'] = $object->quantity;
}
在尝试更新产品并以某种方式处理之前,您可能希望包含一些检查产品是否存在于会话数组中的代码,尽管这会创建一个只有数量的不完整产品。