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);

如果是用户输入,您只需要再添加一个检查

$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 回答