Q
PHP循環
11
A
回答
23
$months = array();
for ($i = 0; $i < 8; $i++) {
$timestamp = mktime(0, 0, 0, date('n') - $i, 1);
$months[date('n', $timestamp)] = date('F', $timestamp);
}
另類的 「定製」 的月份名稱:
$months = array(1 => 'Jan.', 2 => 'Feb.', 3 => 'Mar.', 4 => 'Apr.', 5 => 'May', 6 => 'Jun.', 7 => 'Jul.', 8 => 'Aug.', 9 => 'Sep.', 10 => 'Oct.', 11 => 'Nov.', 12 => 'Dec.');
$transposed = array_slice($months, date('n'), 12, true) + array_slice($months, 0, date('n'), true);
$last8 = array_reverse(array_slice($transposed, -8, 12, true), true);
輸出這樣個月的下拉數組是簡單:
<select name="month">
<?php
foreach ($months as $num => $name) {
printf('<option value="%u">%s</option>', $num, $name);
}
?>
</select>
6
$months = array(
'January',
'February',
'March',
'April',
'May',
'June',
'July ',
'August',
'September',
'October',
'November',
'December',
);
$current = date('F');
$start = array_search($current, $months);
$toshow = array();
$total = 0;
for($i = $start; $total < 8; $i--)
{
if($i == 0)
{
$i = 12;
}
$toshow[] = $months[$i];
$total++;
}
var_dump($toshow);
把那一個鏡頭,只需將$ toshow轉儲到您的HTML。
1
這絕對是基於deceze的答案只有幾個月的向後排序,當月選擇
$curr_month = date('F',mktime(0, 0, 0, date('n')));
$months = array();
for ($i = 1; $i <= 8; $i++) {
$months[] = date('F', mktime(0, 0, 0, date('n') - $i, 1));
}
$months = array_reverse($months, true);
echo "<select>\n";
foreach($months as $key =>$value){
echo "<option value='$value'>$value</option>\n";
}
echo "<option value='$curr_month' selected='selected'>$curr_month</option>
</select>";
+0
爲什麼將它們向後排序,看起來很奇怪 – 2011-06-03 00:30:41
+0
不,看起來是正確的 - 1月 - 2月等,而不是2月 - 1月等等。原始數組的月份數從當前月份向後數8個月。 – 2011-06-03 01:53:45
2
下面的一些功能......在頁面加載時將選擇當前日期,月份,年份+包括你的需要 - 8個月
<form method="POST" action="">
<p><select size="1" name="day">
<?php formDay(); ?>
</select>-
<select size="1" name="month">
<?php formMonth(); ?>
</select>-
<select size="1" name="year">
<?php formYear(); ?>
</select> <input type="submit" value="Submit"></p>
</form>
<?php
//functions to loop day,month,year
function formDay(){
for($i=1; $i<=31; $i++){
$selected = ($i==date('n'))? ' selected' :'';
echo '<option'.$selected.' value="'.$i.'">'.$i.'</option>'."\n";
}
}
//with the -8/+8 month, meaning june is center month
function formMonth(){
$month = strtotime(date('Y').'-'.date('m').'-'.date('j').' - 8 months');
$end = strtotime(date('Y').'-'.date('m').'-'.date('j').' + 8 months');
while($month < $end){
$selected = (date('F', $month)==date('F'))? ' selected' :'';
echo '<option'.$selected.' value="'.date('F', $month).'">'.date('F', $month).'</option>'."\n";
$month = strtotime("+1 month", $month);
}
}
function formYear(){
for($i=1980; $i<=date('Y'); $i++){
$selected = ($i==date('Y'))? ' selected' :'';
echo '<option'.$selected.' value="'.$i.'">'.$i.'</option>'."\n";
}
}
?>
13
如果您需要打印像選擇框的選項,請嘗試使用此:
for($i=1;$i<13;$i++)
print("<option>".date('F',strtotime('01.'.$i.'.2001'))."</option>");
相關問題
- 1. PHP foreach循環
- 2. PHP - foreach循環
- 3. Php nestedfor循環
- 4. 在PHP循環
- 5. PHP - While循環
- 6. PHP while循環
- 7. PHP Infinate循環
- 8. PHP:循環
- 9. PHP foreach循環
- 10. Foreach循環PHP
- 11. PHP For循環到While循環轉換
- 12. PHP - 鑽取數據和循環循環
- 13. PHP循環內循環x x後x
- 14. PHP雖然在While循環中循環
- 15. PHP - 循環內循環,也許?
- 16. PHP for循環while while循環
- 17. PHP數組循環與子循環
- 18. PHP繼承循環
- 19. PHP FPDF ForEach循環
- 20. 循環PHP陣列
- 21. PHP循環用foreach
- 22. php,SimpleXML,while循環
- 23. while循環在php
- 24. PHP循環插話
- 25. PHP循環問題?
- 26. php - > foreach循環
- 27. PHP - 結合循環
- 28. PHP For循環$ _POST
- 29. PHP數組循環
- 30. PHP for each循環
謝謝噸欺騙。它們是我不會想到這樣做的很好的例子(我的嘗試並不那麼簡潔)。當我使用你的第一個答案時,我喜歡第二個的清晰輸出。 – kimion09 2011-06-03 03:17:37