【发布时间】:2015-01-22 16:14:14
【问题描述】:
我有一个数组,其中包含带有相关“左”或“右”值的时间戳:
array (size=237)
1421439428 => string 'left' (length=4)
1421439411 => string 'right' (length=5)
1421439392 => string 'left' (length=4)
[here goes the example TS from below]
1421439380 => string 'right' (length=5)
1421439358 => string 'left' (length=4)
1421439329 => string 'right' (length=5)
1421439240 => string 'right' (length=5)
1421439234 => string 'left' (length=4)
现在我想给出一个时间戳,例如1421439391(即是否在键中),我想知道最新的值是多少。在这种情况下“正确”。即使它更接近左值我也想知道下面的值!
这怎么可能(没有循环)?
带循环(基于 Alex W 链接的函数):
function closest($array, $number) {
foreach ($array as $key=>$val) {
if ($key <= $number) return $val;
}
return end($array); // or return NULL;
}
【问题讨论】:
-
可以使用循环。除非我们开始在迭代或嵌套循环中执行密集任务,否则循环的处理能力很便宜。特别是对于这个例子。你为什么害怕他们?
-
究竟如何在没有循环的情况下扫描阵列?计算机基本上一次处理一位数据。一个数组是多位数据。没有循环,就无法扫描数组。即使您没有在代码中明确使用
for或foreach,也会有一个循环来迭代数组的值并应用您的测试。 -
我知道 R(统计语言)中的解决方案可以解决问题。
-
为什么会被否决?