我需要计算数组中值的总和,其中键索引低于......某事。
我已经这样做了:
$temp_sum = 0;
for($temp_start = 0; $temp_start < 10; $temp_start++)
{
$temp_sum += $array[$temp_start];
}
但我的问题是......以更时尚的方式做到这一点的另一种方式是什么?
使用数组函数?也许这个任务有一个特定的数组函数?
这个for循环(或者甚至使用foreach循环)看起来并不合适 - 但也许它是使用标准循环的唯一方法。
答案 0 :(得分:1)
for
循环允许在其表达式中使用多个语句,以逗号分隔。因此,您可以在$temp_sum
构造中实例化for
,以使其更简洁:
for($temp_sum = 0, $temp_start = 0; $temp_start < 10; $temp_start++)
{
$temp_sum += $array[$temp_start];
}
我不知道它是否一定有助于提高可读性。另外,如果您尚未验证这一点,则可能需要确保$array
中至少包含10个元素。
另一种选择可能是:
$sum = array_sum( array_slice( $array, 0, 10 ) );
但是这需要数组键从0开始并且相邻并按顺序排序。换句话说,这个数组:
$array = [
13 => 12,
31 => 23,
1 => 24,
0 => 21
/* ... */
];
会产生不良后果。
不确定它是否也更有效率,但它是一个很好的单行并且它有可能增加的好处,如果少于10个元素它不会抱怨在数组内部。您必须决定是否可取。
总而言之,我认为您最初使用for
循环是典型用例的一个很好的例子。例如,foreach
循环通常用于您想要迭代所有元素的情况,而不仅仅是有限的集合。