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

时间:2016-04-23 05:10:27

标签: php

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

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

3 个答案:

答案 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行的函数调用返回单个值而不是产品数组。

然后你试着让第一个元素好像是一个数组,因此你的错误。