1

なぜこれが機能しないのか理解できません。それは、いくつかの単純な愚かな間違いが原因であることがわかります。

手伝ってくれませんか。

$p = 'aM';

function FormatPeriod($p) {
 $periodFormated = 'null';
 switch($p){
   case "am": $periodFormated = "AM"; break;
   case "Am": $periodFormated = "AM"; break;
   case "aM": $periodFormated = "AM"; break;
   case "pm": $periodFormated = "PM"; break;
   case "Pm": $periodFormated = "PM"; break;
   case "pM": $periodFormated = "PM"; break;
     default: $periodFormated = 'fail';
    }
  return $periodFormated;
 }

$periodFormated = FormatDate($p);

悲しいことに、出力は「aM」です。

文字列が「AM」に変更されなかったのはなぜですか?

〜ありがとうございます。

4

3 に答える 3

1

必要なのは

$p = 'am';
echo strtoupper($p);

ユーザー入力の場合は、もう1つチェックを追加する必要があります

$p = strtolower($p);
if ($p == 'am' || $p == 'pm')
{
   $p = strtoupper($p);
}
else
{
   echo 'fail';
}

そして、フォーマットするために別の関数を呼び出しています。あなたは電話するべきでFormatPeriodあり、あなたは電話しているFormatDate

于 2012-04-09T07:30:41.427 に答える
0

このコードはひどいです:)!

大文字と小文字を区別する必要はありません。文字列を大文字に変換するだけです。

$p = 'aM';

function FormatPeriod($p) {
    $periodFormated = strtoupper($p) ;
    return $periodFormated;
 }

$periodFormated = FormatPeriod($p);
于 2012-04-09T07:36:32.907 に答える
0
            function FormatPeriod($p) {
             $periodFormated = strtoupper(trim($p));    //trim extra spaces and convert to uppercase
             if($periodFormated!='AM' && $periodFormated!='PM') //check if it is not AM or PM
                return 'fail';  //then return 'fail'
             else
                return $periodFormated; //otherwise return AM or PM
             }

            //Testing
            echo FormatPeriod('am') . '<br />';
            echo FormatPeriod('Am') . '<br />';
            echo FormatPeriod('aM') . '<br />';
            echo FormatPeriod(' am ') . '<br />';
            echo FormatPeriod('a am') . '<br />';
于 2012-04-09T07:40:26.287 に答える