php中switch循环语句吗,php中switch语句的用法介绍

Switch 语句

如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。

使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

语法

代码如下

switch (expression)

{

case label1:

code to be executed if expression = label1;

break;

case label2:

code to be executed if expression = label2;

break;

default:

code to be executed

if expression is different

from both label1 and label2;

}

实例工作原理:

对表达式(通常是变量)进行一次计算

把表达式的值与结构中 case 的值进行比较

如果存在匹配,则执行与 case 关联的代码

代码执行后,break 语句阻止代码跳入下一个 case 中继续执行

如果没有 case 为真,则使用 default 语句

代码如下

switch ($cps_sign) {

case 'yiqifa':

case 'chengguo':

case 'roiyiqifa':

case 'lkt':

case 'fanli':

case 'qqfanli':

case 'weiyi':

case 'yoyi':

$sql = "INSERT into sa_cps_list (`uv`,`s_time`,`cps`,`url`) VALUES ('{$uv}',{$timestamp},'{$cps_sign}','{$url}')";

echo $sql;exit();

mysql_query($sql);

break;

default:

break;

}

仔细看了一下程序,莫非是switch和case惹的祸?于是,写DEMO检测。

//输出结果为:bool(true) bool(false) xxx

代码如下

var_dump(""==0);

var_dump(""===0);

$errid = '';

switch ($errid) {

case 0 :

echo "xxx";

break;

default:

echo "yyy";

}

真相大白了,原来 switch/case结构中,比较case值用的是==而不是===。这样,空就和0相等了,我收到的结果也当然就是错误的了。

没办法,程序不想改,毕竟多条件的时候switch/case要比一堆if让人看着舒心。想办法吧。呵呵。

代码如下

$result = '';

if(is_numeric($err_id) === false) {

$result .= '宕机或超时,没有返回值';

return $result;

}

switch ($err_id) {

case xxx :

..........

}

问题解决了,先判断一下返回值是否是数值,如果不是数值的话,直接return。

以后写switch/case判断数字的时候一定要小心,尤其是有0这个败家值存在的时候

switch 语句和 elseif 语句的比较

在 switch 语句中,条件只求一次,然后和每个 case 比较,而在 elseif 语句中,条件会再次求值。如果你的条件比较复杂,或者是多次循环,用 switch 语句速度会更加快些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值