2013-10-18 40 views
0

我有轉換爲一個數組具有1至7的值的字符串,例如3,1234567,1234,357,46等查找下一個最高值

鑑於圖1和7,我如何找到之間的任何數數組中的下一個值?

$str=12345; 
$arr=str_split($str); 

$end=end($arr); 

if ($day==$end) { 
    $next=reset($arr); 
} else { 
    $loc=array_search($day, $arr)+1; 
    $next=$arr[$loc]; 
} 

print $next; 

如果天是1以上的回報2,並且如果天是5上方返回1這兩者都是正確的,但如果一天是6或7,則它不返回正確的值應爲1 - 同樣,如果數組是1245,日期是3,它不會返回應該爲4的正確值。

我需要做什麼才能使上述方法在所有方案中返回正確的值?

回答

0
$values = array_filter($arr, function($v) use($day) { 
    return $v > $day; 
}); 

$value = $values ? array_shift($values) : array_shift($arr); 

可能不是最優的,未經測試,但它應該工作。