不支持的操作数类型


Unsupported operand types

我正在为一个网站的购物车功能工作,并偶然发现了这个错误:

致命错误:不支持的操作数类型在…

我认为这可能是因为我在数组中的变量和值之间执行一些数学运算。我不确定的是如何对数组内的值执行数学运算:

$line_cost = $price * $quantity;
有人能给我一些指导吗?我会非常感激!以下是相关代码-
<?php session_start(); ?>
<?php
    
  $product_id = $_GET['id'];     
  $action     = $_GET['action'];
    
  switch($action) {
    case "add":
      $_SESSION['cart'][$product_id]++;
      break;
  }
        
?>
    
<?php   
  foreach($_SESSION['cart'] as $product_id => $quantity) {  
    list($name, $description, $price) = getProductInfo($product_id);
                    
    echo "$price"; // 20
    var_dump($quantity); // "array(2) { ["productid"]=> string(1) "2" ["qty"]=> int(1) }". 
                    
    $line_cost = $price * $quantity;  //Fatal error occurs here
  }
?>

由于gettype()函数显示$price是字符串,$quantity是数组,因此首先将$price类型转换为整数,然后使用数组$quantity及其键来访问整数值(如果不是整数,也进行类型转换)

就像这样:

$line_cost =(int)$price * (int)$quantity['key'];

我认为这可能是因为我在数组中的变量和值之间执行了一些数学运算。

你正在尝试在整数数组之间执行数学(乘法),例如:20x数组。这不起作用,因为数组没有乘法操作数(如果有,它可能不会做你想要的)。

想要做的是对数组中的变量和值(元素)执行数学运算。由于数组是一个关联数组,因此需要提供键,如下所示:

$line_cost = $price * $quantity['qty'];