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

PHP循环遍历银行数据出现类错误,如何根据指定ID获取对应金额?

解决PHP循环中的类错误并实现根据user_id获取amount的功能

错误原因

你遇到的Fatal error: Uncaught Error: Class报错,大概率是遍历数组时误用了类对象的访问语法(比如用->访问数组元素),PHP把数组当成类来解析,导致触发类不存在的错误。

假设的数组结构

先明确符合需求的典型数组结构:

$banks_data = [
    ['user_id' => 1, 'amount' => 15000],
    ['user_id' => 3, 'amount' => 26000],
    ['user_id' => 5, 'amount' => 32000]
];

错误代码示例(导致报错的常见写法)

// 错误:用类的->符号访问数组元素
foreach ($banks_data as $bank) {
    if ($bank->user_id == $user_id) {
        return $bank->amount;
    }
}

修正后的实现方案

方案1:foreach遍历(直观易懂)

function getAmountByUserId($banks_data, $targetUserId) {
    foreach ($banks_data as $item) {
        // 用数组下标[]访问元素,替代类的->符号
        if ($item['user_id'] === $targetUserId) {
            return $item['amount'];
        }
    }
    // 未找到匹配user_id时返回默认值
    return null;
}

// 使用示例
$userId = 3;
$amount = getAmountByUserId($banks_data, $userId);
echo $amount; // 输出:26000

方案2:用array_column+array_search(简洁高效)

$userId = 3;
// 提取所有user_id组成数组,查找目标id的索引
$targetIndex = array_search($userId, array_column($banks_data, 'user_id'));
// 根据索引获取amount,未找到则返回null
$amount = $targetIndex !== false ? $banks_data[$targetIndex]['amount'] : null;
echo $amount; // 输出:26000

关键修正点

  • 数组元素必须用[]下标访问,不能用类对象的->符号,这是解决报错的核心
  • 确保循环逻辑语法正确,避免PHP将代码误解析为类相关操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:01:08