PHP已存在键却提示Undefined array key问题求助
问题分析与解决
你的报错根源是写法逻辑错误:
你写的array_sum($array['number'])是在直接找整个数组$array的'number'键,但你的$array是二维数组(每个元素是带'number'的子数组),$array本身根本没有'number'这个键,所以才会报"Undefined array key 'number'"。而你用foreach检查的是每个子数组$item里的'number',这和前者完全是两回事,所以检查代码不会返回错误。
正确的求和写法
有两种简单的解决方式:
方法一:用array_column提取值后求和
array_column可以直接从二维数组中提取所有子数组的'number'值,生成一个一维数组,再用array_sum求和:
$sum = array_sum(array_column($array, 'number'));
方法二:手动循环累加
如果不想用array_column(比如PHP版本低于5.5),可以手动遍历累加:
$sum = 0; foreach ($array as $item) { $sum += $item['number']; }
额外注意点
如果子数组里的'number'是字符串类型(比如'100'),array_sum会自动将其转为数字计算,不影响结果;但如果是无法转为数字的字符串(比如'abc'),会被当成0处理,这点需要留意。
内容的提问来源于stack exchange,提问作者Victus
相关产品推荐
相关产品推荐

