尽我所能到目前为止管理:
$testValue = 7;
array_walk($rebates, function($value, $key, &$test) { if ($key > $test[0]) unset($test[1][$key]); } array($testValue,&$rebates));
用途引用传递的讨厌的小怪癖,并剥去$回扣数组,其中的关键是数字超过$测试值更大的任何条目...不幸的是,它仍然留下低键入口,所以需要array_pop()来获得正确的值。请注意,它会主动减少原始$ rebates数组中的条目。
也许有人可以在此基础上放弃阵列中较低的条目。
目前没有5.3.3可用,所以没有使用匿名函数进行测试,但在使用标准回调函数时工作(尽可能多地工作)。
编辑
建立在我以前的一个内胆,增加第二线(所以也许应该不算):
$testValue = 7;
array_walk($rebates, function($value, $key, &$test) { if ($key > $test[0]) unset($test[1][$key]); } array($testValue,&$rebates));
array_walk(array_reverse($rebates,true), function($value, $key, &$test) { if ($key < $test[0]) unset($test[1][$key]); } array(array_pop(array_keys($rebates)),&$rebates));
现在仅造成包含单个的$回扣数组元素,它是原始$ rebates数组中最高的断点键,它是一个比$ testValue更低的键。
你知道这是没有意义的要求单行当你不指定最大行的长度;) – Gordon 2010-10-27 11:41:07
键不是一种模式?因此,我们不能做一个功能 – nerkn 2010-10-27 11:41:18
@戈登:在代码之前的高尔夫。 – BoltClock 2010-10-27 11:42:46