如何忽略PHP中end()函数传入NULL值时的警告?
问题分析与解决方案
核心问题
你的try-catch没生效的原因是:end() expects parameter 1 to be array, null given属于PHP警告级别错误,默认情况下这类错误不会抛出可被try-catch捕获的Exception对象,所以你的异常捕获逻辑根本没触发。
修正方案
不要依赖异常捕获处理这类数组不存在的情况,应该做前置有效性检查,确保传给end()的参数是合法数组。以下是优化后的代码:
// 逐层获取财务数据,不存在则设为空数组 $financialData = $date_Firma_Raw["data"]["company"]["financialData"] ?? []; // 检查数据是否为有效数组且非空 if (is_array($financialData) && !empty($financialData)) { // 取最后一项的营收,不存在则设为"-" $date_Firma[4] = end($financialData)["turnover"] ?? "-"; } else { $date_Firma[4] = "-"; }
代码说明
- 使用
??空合并运算符处理数组键可能不存在的情况,避免未定义索引的警告; - 先验证
financialData是数组且非空,再调用end(),从根源避免参数错误警告; - 即使最后一项的
turnover不存在,也通过??直接设为"-",无需额外的empty()判断。
内容的提问来源于stack exchange,提问作者Sumutiu Marius
相关产品推荐
相关产品推荐

