盡我所能到目前爲止管理:
$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