我有这个PHP代码:
$qty_old = $product->getProductData (null, $product_id, null, null, 'quantity', null, '1');
$qty_old = $qty_old[0]['quantity'];
$qty_new = $qty_old - $quantity;
$product->update('product_tangible', array ('quantity' => $qty_new), 'id = "'.$product_id.'"');
并产生如下错误:
Warning: Cannot use a scalar value as an array...
我认为主要问题在于这一行:
$qty_new = $qty_old - $quantity;
它生成整数,而我在这里阅读:http://php.net/manual/en/function.is-scalar.php,它说
标量变量是包含整数,浮点数,字符串或变量的变量 布尔值。类型数组,对象和资源不是标量。
我试着这样做:
$qty_new = $qty_old - $quantity;
$qty_new = (array)$qty_new;
但仍然无法摆脱错误。如何将该整数用于数组值?谢谢
答案 0 :(得分:3)
这两行没有意义:
$qty_old = $qty_old[0]['quantity'];
$qty_new = $qty_old - $quantity;
第一行:您正在为数组提供可能不是数组的值。
第二行:你从数组中减去$ quantity(可能是一个数字),这不是地球上允许的操作:)
我建议你更改这两行,让它们按照你最初的要求去做。如果您对如何操作有疑问,请向我解释您希望他们做什么,我将在答案中包含该过程:)
答案 1 :(得分:2)
错误是指$qty_old = $qty_old[0]['quantity'];
行。它告诉你的是$qty_old
不是数组。
我建议在致电$qty_old
后立即打印$product->getProductData()
以查看它给你的内容。这有助于您了解如何使用数据。
答案 2 :(得分:0)
看起来第1行的函数调用返回单个值而不是产品数组。
然后你试着让第一个元素好像是一个数组,因此你的错误。