6
我有一個這樣的陣列:逆向在PHP陣列範圍樣功能
array(0, 2, 4, 5, 6, 7, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
和我想獲得它作爲以下字符串:
0, 2, 4-7, 90+
任何示例在我開始從頭上拉頭髮之前,那裏有嗎?
謝謝。
UPDATE:
這是我服用@安迪的代碼,並修改了一點之後使用的最終解決方案。
function rangeArrayToString($rangeArray, $max = 99) {
sort($rangeArray);
$first = $last = null;
$output = array();
foreach ($rangeArray as $item) {
if ($first === null) {
$first = $last = $item;
} else if ($last < $item - 1) {
$output[] = $first == $last ? $first : $first . '-' . $last;
$first = $last = $item;
} else {
$last = $item;
}
}
$finalAddition = $first;
if ($first != $last) {
if ($last == $max) {
$finalAddition .= '+';
} else {
$finalAddition .= '-' . $last;
}
}
$output[] = $finalAddition;
$output = implode(', ', $output);
return $output;
}
Erm ...也許你應該嘗試使用一些*編程*來解決這個問題?我並不想冒犯你,但如果你稍微使用你的大腦,這是一項簡單的任務。 – 2010-12-23 14:29:43
我真的不明白,在用戶提出問題的網站中,仍然有人像你剛纔那樣評論評論。 如果你認爲這不是一件容易的事,你不必回答這個問題,但告訴我,我可以嘗試通過編程來做到這一點,根本沒有任何幫助。我喜歡看代碼示例。它通過不堅持範式來豐富我的編碼實踐。 – Doron 2010-12-23 14:38:09