【问题标题】:Sum of array values where key is lower than - with fashion键低于的数组值的总和 - 与时尚
【发布时间】:2017-11-26 20:37:36
【问题描述】:

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

我已经做到了,通过这个:

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

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

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

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

【问题讨论】:

  • 致投票结束这个问题的用户,因为他们认为它“太宽泛”:我不明白为什么这个问题被标记为“太宽泛”。你能详细说明吗?对我来说,这似乎是一个足够简洁的问题。

标签: php arrays function loops


【解决方案1】:

for 循环允许在其表达式中使用多个语句,以逗号分隔。因此,您可以在 for 构造中实例化 $temp_sum,使其更加简洁:

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

【讨论】:

  • 完美答案,谢谢:)
  • 对这个答案的质量感到惊讶,非常感谢
  • @KrystianPolska 很高兴听到 Krystian 的声音;谢谢你!很高兴您发现它对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2018-04-03
  • 1970-01-01
  • 2020-02-16
  • 2012-08-12
相关资源
最近更新 更多