密钥低于 - 时尚的数组值的总和

时间:2017-11-26 20:37:37

标签: php arrays function loops

我需要计算数组中值的总和,其中键索引低于......某事。

我已经这样做了:

$temp_sum = 0;
for($temp_start = 0; $temp_start < 10; $temp_start++)
{
   $temp_sum += $array[$temp_start];
}

但我的问题是......以更时尚的方式做到这一点的另一种方式是什么?

使用数组函数?也许这个任务有一个特定的数组函数?

这个for循环(或者甚至使用foreach循环)看起来并不合适 - 但也许它是使用标准循环的唯一方法。

1 个答案:

答案 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循环通常用于您想要迭代所有元素的情况,而不仅仅是有限的集合。