Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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
PHPs开关中的量程_Php_Switch Statement_Range - Fatal编程技术网

PHPs开关中的量程

PHPs开关中的量程,php,switch-statement,range,Php,Switch Statement,Range,我的老师给了我这个任务 生成一个int变量,表示一周中的哪一天(1-7)。在下列情况下做一个switch语句: 1-5echo“工作日” 6-7echo“周末” 其他值回显“未知日期” 我的问题是零 起初我写了这段代码 $day = 7; switch ($day) { case $day >= 1 && $day <= 5: echo "Weekday"; break; case $day >= 6 &a

我的老师给了我这个任务

生成一个int变量,表示一周中的哪一天(1-7)。在下列情况下做一个switch语句:

  • 1-5
    echo“工作日”
  • 6-7
    echo“周末”
  • 其他值
    回显“未知日期”
我的问题是零

起初我写了这段代码

$day = 7;

switch ($day) {
    case $day >= 1 && $day <= 5:
        echo "Weekday";
        break;

    case $day >= 6 && $day <= 7:
        echo "Weekend";
        break;

    default:
        echo "Unknown day";
        break;
}
但情况更糟。我总是得到
default
选项


我知道有更好的方法可以做到这一点,但我只需要使用switch语句就可以了。

您可以将case语句中的值堆叠在一起。以下是一个片段:

case 6:
case 7:
    echo "Weekend";
    break;

您可以堆叠具有属于一起的值的case语句。以下是一个片段:

case 6:
case 7:
    echo "Weekend";
    break;

了解您的switch语句正在将switch值与每个case语句中的表达式进行比较:


如果
$day=0
案例$day>=1&&&$day=1&&$day了解您的switch语句正在将switch值与每个案例语句中的表达式进行比较:


如果
$day=0
案例$day>=1&&&$day=1&&$day尽管对于这一点,我会使用switch-false-nulll中哪一个更好将等于0,但也很难与1进行比较,因为它不严格,它被调用

带开关的代码:

<?php

$day = 0;

switch ($day) {
    case 1: // if you put as day anything but 0, false, null it will go to true
    case 2:
    case 3:
    case 4:
    case 5:
      echo 'weekday';
      break;
    case 6:
    case 7:
      echo 'weekend';
      break;
    default:
      echo 'unknown';  
}
如果您切换(true)
,它可能会工作,但没有多大意义,代码如下:

<?php

$day = 7;

switch (true) { 
    case $day > 0 && $day < 6: 
      echo 'weekday';
      break;
    case $day === 6 || $day === 7 :
      echo 'weekend';
      break;
    default:
      echo 'unknown';
}

尽管对于这个问题,我会使用,如果在开关中哪个更好,false nulll将等于0,也很难与1进行比较,因为它不是严格的,它被调用

带开关的代码:

<?php

$day = 0;

switch ($day) {
    case 1: // if you put as day anything but 0, false, null it will go to true
    case 2:
    case 3:
    case 4:
    case 5:
      echo 'weekday';
      break;
    case 6:
    case 7:
      echo 'weekend';
      break;
    default:
      echo 'unknown';  
}
如果您切换(true)
,它可能会工作,但没有多大意义,代码如下:

<?php

$day = 7;

switch (true) { 
    case $day > 0 && $day < 6: 
      echo 'weekday';
      break;
    case $day === 6 || $day === 7 :
      echo 'weekend';
      break;
    default:
      echo 'unknown';
}
检查此项,但我认为您可以在执行$day>=的第一个代码中添加,就在
默认值之前:
只添加
案例0
而不添加破绽查看此答案:检查此项,但我认为您可以在执行$day>=的第一个代码中添加,就在
默认值之前:
只添加
case 0
而不添加break请参见以下答案: