我想在我的数组中求和:
<?php
if(isset($values[$key])) {
$values[$key] += $total;
} else {
$values[$key] = $total;
}
如果我只写“+ =”,我会收到错误“未定义索引”。 你知道一种更简单的方法吗?因为长代码太长了。感谢
答案 0 :(得分:3)
你可以稍微缩短一下
<?php
if(!isset($values[$key]))
$values[$key]= 0;
$values[$key] += $total;
但是你编写代码的方式已经非常简洁,更重要的是,它非常简洁。
编辑:首先发生错误,因为写作时
$values[$key] += $total;
,在内部与$values[$key] = $values[$key] + $total
相同 - 并且当$ value [$ key]未首先启动时,无法读取。
PHP通常假定它为0然后抛出未定义的&#34;键&#34; -note以通知程序员他忘了启动数组元素。
答案 1 :(得分:1)
我认为你可以简单地使用array_sum($ arrayname)函数。
如果你想对数组的键求和做这样的事情
array_sum(array_keys($array_name));
答案 2 :(得分:1)
您可以在一行中完成所有工作:
$values[$key] = array_key_exists($key, $values) ? $values[$key] + $total : $total;
以下是参考资料:
答案 3 :(得分:1)
应该是$total
第一个
<?php
$total = 0;
if(isset($values[$key])) {
$total += $values[$key]; //Also equal to $total = $total + $values[$key];
} else {
$total = $values[$key];
}
答案 4 :(得分:0)
试试这个:
<?php
$values[$key] = @$values[$key] + $total;
答案 5 :(得分:0)
使用较少行的另一种方法是使用ternary operator:
<?php
$values[$key] = isset($values[$key]) ? ($values[$key] + $total) : $total;
答案 6 :(得分:0)
我不完全确定你要做什么,看到你传入这个阵列会很好。无论哪种方式,都会产生undefined index
错误,因为您尝试在不存在时访问数组键$key
。
从我可以解决的问题来看,如果设置了该键,您只想将总数添加到数组中的键上?如果未设置密钥,则需要创建该密钥并将其值设置为当前总计。至少那是我对你想要的理解。
所以你所做的几乎是正确的,除非你试图访问条件失败时尚未设置的索引。
if (!isset($array[$key])) {
$array[$key] = $total;
} else {
$array[$key] += $total;
}
上面应该修复你的错误,可能有一些更干净的解决方案,但不知道有关数组内容和脚本目的的更多信息,很难说最好的方法是什么。