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条)

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路