简单的弦乐开关和箱子功能不起作用

时间:2012-04-09 07:28:55

标签: php

我无法弄清楚为什么这不起作用,我知道这是因为一些简单的愚蠢错误。

你能帮帮我吗?

$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”?

〜谢谢。

3 个答案:

答案 0 :(得分:1)

你只需要是

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

如果是用户输入,则只需添加一个支票

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

你正在调用不同的格式化函数。您应致电FormatPeriod,然后致电FormatDate

答案 1 :(得分:0)

这段代码非常糟糕:)!

您无需检查每个案例,只需将字符串转换为大写字母。

$p = 'aM';

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

$periodFormated = FormatPeriod($p);

答案 2 :(得分: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 />';