You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel报错Unsupported operand types: int * Collection,求计算逻辑修复

问题描述

集合返回的是整数,但计算时出现类型不匹配错误,代码如下:

'data' => $firstCalc->map(function($item) use ($secondCalc) {
    return ($item->pluck('rate')->first() * $secondCalc->map(function($secondItem){
                return $secondItem->pluck('rate')->first() /100;
            }));
}),

运行后报错:

Unsupported operand types: int * Illuminate\Support\Collection
错误出现在这一行:

return ($item->pluck('rate')->first() * $secondCalc->map(function($secondItem){
修复方案

错误原因

$secondCalc->map(...)方法会返回一个新的Illuminate\Support\Collection集合对象,你直接用整数和集合做乘法运算,PHP不支持这种操作,导致类型不匹配报错。

针对不同需求的修复代码

需求1:将第一个集合的每个rate,与第二个集合所有rate除以100后的总和相乘

使用sum方法替代map,先计算总和再执行乘法:

'data' => $firstCalc->map(function($item) use ($secondCalc) {
    // 计算第二个集合所有rate除以100的总和
    $secondRateSum = $secondCalc->sum(function($secondItem) {
        return $secondItem->pluck('rate')->first() / 100;
    });
    // 执行整数乘数值的运算
    return $item->pluck('rate')->first() * $secondRateSum;
}),

需求2:将第一个集合的每个rate,与第二个集合的每个rate分别相乘

把乘法逻辑移到内层map中,确保每次都是整数与单个数值运算:

'data' => $firstCalc->map(function($item) use ($secondCalc) {
    $firstRate = $item->pluck('rate')->first();
    // 对第二个集合的每个item,计算对应乘积
    return $secondCalc->map(function($secondItem) use ($firstRate) {
        return $firstRate * ($secondItem->pluck('rate')->first() / 100);
    });
}),

内容的提问来源于stack exchange,提问作者user2682025

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:16:24