douju4278 2018-05-01 20:53
浏览 91
已采纳

PHP返回数据类型与Switch vs If Else

I'm trying to track down why the if/else logic returns the correct datatypes versus the switch that does not.

IF/ELSE:

$value = false;
var_dump($value);

if(is_int($value)) {
  echo "INT";
} elseif (is_bool($value)) {
  echo "BOOL";
} elseif (is_null($value)) {
  echo "NULL";
} else {
  echo "DEFAULT";
}

SWITCH:

$value = false;
var_dump($value);

switch ($value) {
  case is_int($value):
    echo "INT";
    break;        
  case is_bool($value):
    echo "BOOL";
    break;
  case is_null($value):
    echo "NULL";
    break;
  default:
    echo "DEFAULT";
}

I'm not using strict comparison in the if/else. Not sure what's going on. Anyone?

  • 写回答

3条回答 默认 最新

  • douqiaoru2583 2018-05-01 21:05
    关注

    If you wanted your switch statement to work .. You nee to switch (gettype($value)) -- Which checks the type of variable you have against the entire statement... then case 'boolean': for example would check for a boolean

    A literal translation of how that would look in your case is:

    $value = false;
    var_dump($value);
    
    switch (gettype($value)) {
      case 'integer':
        echo "INT";
        break;        
      case 'boolean':
        echo "BOOL";
        break;
      case 'NULL':
        echo "NULL";
        break;
      default:
        echo "DEFAULT";
    }
    

    With the following types being what you can check for:

    boolean
    integer
    double
    string
    array
    object
    resource
    NULL
    unknown type
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序