为什么这个整数不能用作数组值


Why can't this integer be used as an array value?

我有这个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;

但仍然无法摆脱该错误。 如何将该整数用于数组值? 谢谢

这两

行没有意义:

$qty_old = $qty_old[0]['quantity'];
$qty_new = $qty_old - $quantity;

第一行:你给数组提供了可能不是数组的值。

第二行:您正在从数组中减去$quantity(可能是数字),这不是地球上允许的操作:)

我建议你改变这两行,让他们做你最初想让他们做的事情。如果您对如何做到这一点有疑问,请向我解释您希望他们做什么,我会在我的回答中包括该过程:)

错误是指$qty_old = $qty_old[0]['quantity'];行。它告诉你的是$qty_old不是一个数组。

我建议在通话后立即打印出$qty_old$product->getProductData()看看它能给你带来什么。这将帮助您了解如何使用数据。

看起来 #1 行上的函数调用返回的是单个值,而不是产品数组。

然后你尝试获取第一个元素,就好像它是一个数组一样,因此你的错误。