iT邦幫忙

0

php 月份數值轉國字

php

各位大大好:
程式送出來的月份是01 02 03一直到12
我想說透過switch 轉成國字的一月、二月、三月,但轉換到08會產生
Parse error: Invalid numeric literal in D:\eehome\key\c.php on line 88
所以想問是否有其他辦法可以轉成國字的月份 謝謝!

echo'<div  border:#af9ace 1px solid;>'.changemonth($day[2]).'</div>';
  
   function changemonth($m)
     
     {
     
     switch ($m)
    
    {
    	case 01:
    	
    	return "一月";
    	break;
       	
        case 02:
    	
    	return  "二月";
    	break;
    	
    	case 03:
    	
    	return  "三月";
    	break;
    	case 04:
    	
    	return "四月";
    	break;
    	
    	case 05:
    	return  "五月";
    	break;
    	
    	case 06:
    	return  "六月";
    	break;
    	
        case 07:
    	return  "七月";
    	break;
    	
    	case 08:
    	return  "八月";
    	break;
    
     	
    
}}
看更多先前的討論...收起先前的討論...
weiclin iT邦高手 6 級 ‧ 2018-01-15 19:16:01 檢舉
case '08'
weiclin iT邦高手 6 級 ‧ 2018-01-15 19:22:54 檢舉
不過像這種查表的, 這樣比較簡單:
function changemonth($m) {
$map = ['01' => '一月', '02' => '二月' ......];
return $map[$m];
}
其實你應該先把line 88獨立告知是什麼
不然都只是猜測。
就算weiclin給了不錯的方式,你還是有可能error
小魚 iT邦研究生 4 級 ‧ 2018-01-15 23:26:44 檢舉
看錯誤訊息他覺得那不是數字,
那你傳進去的到底是什麼?
weiclin iT邦高手 6 級 ‧ 2018-01-15 23:43:10 檢舉
0開頭的會被當成8進位數字, 所以"我猜"應該就是那個 08 被當成不合法的八進位數字, 因此會在傳進 "08" 之後執行到 case 08 那邊去, 造成錯誤
樓上是對的
mayyola iT邦新手 4 級 ‧ 2018-01-16 08:58:55 檢舉
謝謝大家回答~讓我收穫不少
untitled iT邦新手 5 級 ‧ 2018-01-22 09:26:37 檢舉
parseInt(x,10)

2 個回答

1
牙膏大師
iT邦新手 5 級 ‧ 2018-01-16 00:29:17
最佳解答

你的程式碼有一個地方可以改善,
return 就是代表這個 function 已經結束了 (即使是在 switch 的 case 當中也一樣),
所以只要一個 case 有必定會發生的 return,就不需要 break 了。

然後參考 weiclin 的說法,
可以把程式改寫成下面這樣,其中的差異你可以在細細體會一番 XD

底下的不同除了會影響 Coding Style 的縮排之外,
還有變數名稱可以取的完整又精要、
函數名稱一般也都會是駝峰式的、
case 中可以只用 return 不用 break、
雙引號的字串之間用「{}」及變數名稱可以取代用「.」串接字串。

<?php

function changeMonth($month)
{
    switch ($month) {
    	case '01': return "一月";
        case '02': return "二月";
    	case '03': return "三月";
    	case '04': return "四月";
    	case '05': return "五月";
    	case '06': return "六月";
        case '07': return "七月";
    	case '08': return "八月";
    	case '09': return "九月";
    	case '10': return "十月";
        case '11': return "十一月";
    	case '12': return "十二月";
    }
}

$changedMonth = changeMonth('08');

echo "<div  border:#af9ace 1px solid;>{$changedMonth}</div>";
haoming iT邦好手 1 級 ‧ 2018-01-16 08:47:54 檢舉

+1

0
混水摸魚
iT邦新手 4 級 ‧ 2018-01-16 11:21:54

https://www.webteach.tw/?p=1102

請參考這篇裡面有範例

看更多先前的回應...收起先前的回應...
mayyola iT邦新手 4 級 ‧ 2018-01-16 11:58:55 檢舉

混水摸魚好~我目前的程式就是參考您的月曆~~

疑!那你怎麼不用 $mtoc=array('01'=>'一月','02'=>'二月'…)
$mtoc[$m];

mayyola iT邦新手 4 級 ‧ 2018-01-17 09:21:53 檢舉

月曆的版本好像沒有寫@ @是嗎~我是看月曆的沒注意年曆

純月曆當然不會有月份囉!年曆才會有^^

我要發表回答

立即登入回答