Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 断开开关语句_Php_Switch Statement - Fatal编程技术网

Php 断开开关语句

Php 断开开关语句,php,switch-statement,Php,Switch Statement,我已经找了好几个小时了,我不知所措。我有下面的代码,当通过switch(as AUG)语句传递八月日期时,它会不断为值返回0,而不是8。回波结果位于代码块下方。对可能出现的问题有什么想法吗?它似乎在7月份运行良好,并在8月1日中断 $when=date("Y-m-d"); $created=date("Ymd"); $date=explode('-',$emprow->HIRE_DATE); echo "<br>hire date is ";print_

我已经找了好几个小时了,我不知所措。我有下面的代码,当通过switch(as AUG)语句传递八月日期时,它会不断为值返回0,而不是8。回波结果位于代码块下方。对可能出现的问题有什么想法吗?它似乎在7月份运行良好,并在8月1日中断

$when=date("Y-m-d");
    $created=date("Ymd");
    $date=explode('-',$emprow->HIRE_DATE);
    echo "<br>hire date is ";print_r($date);echo "<br>";
    switch ($date[1])
    {
        case "JAN":
            $date[1]=01;
            break;
        case "FEB":
            $date[1]=02;
            break;
        case "MAR":
            $date[1]=03;
            break;
        case "APR":
            $date[1]=04;
            break;
        case "MAY":
            $date[1]=05;
            break;
        case "JUN":
            $date[1]=06;
            break;
        case "JUL":
            $date[1]=07;
            break;
        case "AUG":
            $date[1]=08;
            break;
        case "SEP":
            $date[1]=09;
            break;
        case "OCT":
            $date[1]=10;
            break;
        case "NOV":
            $date[1]=11;
            break;
        case "DEC":
        case "Dec":
            $date[1]=12;
            break;
    }
    echo "<br>hire date is ";print_r($date);echo "<br>";
    $startdate=sprintf("%04d%02d%02d",$date[2],$misc->getmonthnum($date[1]),$date[0]);
$when=日期(“Y-m-d”);
$created=日期(“Ymd”);
$date=分解('-',$emprow->HIRE\u date);
echo“
雇用日期为”;打印(日期);回声“
”; 交换机($date[1]) { 案例“JAN”: $date[1]=01; 打破 案件“2月”: $date[1]=02; 打破 “MAR”案: $date[1]=03; 打破 案例“APR”: $date[1]=04; 打破 “可能”一案: $date[1]=05; 打破 案例“JUN”: $date[1]=06; 打破 案件“JUL”: $date[1]=07; 打破 案件“8月”: $date[1]=08; 打破 案例“SEP”: $date[1]=09; 打破 案例“10月”: $date[1]=10; 打破 案件“11”: $date[1]=11; 打破 案例“DEC”: 案例“Dec”: $date[1]=12; 打破 } echo“
雇用日期为”;打印(日期);回声“
”; $startdate=sprintf(“%04d%02d%02d”,$date[2],$misc->getmonthnum($date[1]),$date[0]);
其结果如下:

$date=$emprow->HIRE_DATE;
$unixtime=strtotime($date);
$newdate=date('m',$unixtime);
租用日期为
Array([0]=>05[1]=>2013年8月[2]=>2013年)

租用日期为
数组([0]=>05[1]=>0[2]=>2013)


startdate是20130005

根据我的了解,在调用您的雇佣日期时,您使用$emprow->Hire\u date

将这样的日期、分隔符“-”分解为3个数组,y、m、d,然后尝试解析“m”。我建议如下:

$date=$emprow->HIRE_DATE;
$unixtime=strtotime($date);
$newdate=date('m',$unixtime);

这应该会给你一个结果(当回显$newdate时)“08”

当调用你的雇佣日期时,我看到你使用$emprow->Hire\u Date

将这样的日期、分隔符“-”分解为3个数组,y、m、d,然后尝试解析“m”。我建议如下:

$date=$emprow->HIRE_DATE;
$unixtime=strtotime($date);
$newdate=date('m',$unixtime);

然后,这将给您一个结果(在回显$newdate时)“08”

TecRat是正确的。您的数字(08)被解释为八进制文字,由于基数8中没有8位数字,该数字无效,因此被视为0。要解决这个问题,只需在数字周围加上引号,就可以将它们视为字符串

或者,您可以简单地执行以下操作

echo date_create('05-AUG-2013')->format('m'); // prints 08

TecBrat是正确的。您的数字(08)被解释为八进制文字,由于基数8中没有8位数字,该数字无效,因此被视为0。要解决这个问题,只需在数字周围加上引号,就可以将它们视为字符串

或者,您可以简单地执行以下操作

echo date_create('05-AUG-2013')->format('m'); // prints 08

我验证了我在评论中的内容

08是不存在的八进制数。使用“08”或8

您可以在准备输出时使用零填充

下面是一个用原始代码说明PHP中发生了什么的示例:

$date[1]=08;
echo $date[1];
echo ' | ';
$date[1]=010;
echo $date[1];
输出:

0 | 8

我验证了我在评论中的内容

08是不存在的八进制数。使用“08”或8

您可以在准备输出时使用零填充

下面是一个用原始代码说明PHP中发生了什么的示例:

$date[1]=08;
echo $date[1];
echo ' | ';
$date[1]=010;
echo $date[1];
输出:

0 | 8

只需删除左侧的额外零(即将08更改为8、09更改为9等等),或者将它们转换为字符串。如果一个数字的左边有一个额外的零,它将被解释为一个八进制数(以8为基数的数字系统),其中数字8和9无效,这会破坏您的代码。

只需删除左边的额外零(即将08改为8、09改为9等)或将它们转换为字符串即可。如果一个数字的左边有一个额外的零,它将被解释为一个八进制数字(以8为基数的数字系统),其中数字8和9无效,这会破坏您的代码。

您可能想将分配的数字更改为字符串,或删除左边填充的零,或者,您可能会遇到将数字视为错误基数的问题。您可能希望将分配的数字更改为字符串,或删除左侧填充的零,或者您可能会遇到将数字视为错误基数的问题。我将代码从08更改为“08”,结果成功。谢谢你告诉我它是如何工作的。我把代码从08改为“08”,它就工作了。谢谢你告诉我它是如何工作的。