0

我想更新我的 Woocommerce 购物车对象中的两个变量。我可以通过以下方式查看对象中数组的结构:

echo 'Cart Dump: ' . var_dump($woocommerce->session->cart)

这将返回:

array(1) { ["01822dd92bc31f60fdb64f0c3c5eb241"]=> array(9) { ["product_id"]=> int(616) ["variation_id"]=> string(0) "" ["variation"]=> string(0) "" ["quantity"]=> int(1) ["addons"]=> array(2) { [0]=> array(3) { ["name"]=> string(5) "Color" ["value"]=> string(13) "Black / Black" ["price"]=> string(0) "" } [1]=> array(3) { ["name"]=> string(8) "Warranty" ["value"]=> string(13) "12 Month Free" ["price"]=> string(0) "" } } ["line_total"]=> float(689) ["line_tax"]=> float(0) ["line_subtotal"]=> float(689) ["line_subtotal_tax"]=> float(0) } } Cart Dump: 

我希望能够在该对象内设置变量“值”和“价格”。

我的下一步是尝试进入下一个数组并尝试过

echo 'Cart Dump: ' . var_dump($woocommerce->session->cart[1])

但我想我在这里混合了对象引用和数组引用,我得到了 NULL。我可以理解,我最好为对象创建一个函数,但如果我什至无法访问我想要设置的变量,我不确定如何最好地解决这个问题。

提前谢谢了。

4

2 回答 2

0

你可以试试这个:

//search the key of the array
$cart = $woocommerce->session->cart;
//update values using the key of the array as key
$woocommerce->session->cart[key($cart)]['value'] = 'your value';
$woocommerce->session->cart[key($cart)]['price'] = 'your price';
于 2014-11-12T11:43:47.637 回答
0

这里没有对象,只是数组键是字符串01822dd92bc31f60fdb64f0c3c5eb241而不是整数1

因此,要获取/设置您的value,您将使用:

$woocommerce->session->cart["01822dd92bc31f60fdb64f0c3c5eb241"]["addons"][0]["value"]

等等

根据您的 php 版本,如果您不知道密钥,您可能需要一个临时变量来获取数组的第一个元素:

$temp = reset($woocommerce->session->cart);
$value = $temp["addons"][0]["value"];
于 2013-09-03T08:19:28.630 回答