我无法弄清楚为什么这不起作用,我知道这是因为一些简单的愚蠢错误。
你能帮帮我吗?
$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”?
〜谢谢。
答案 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 />';