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
相关产品推荐
相关产品推荐

