我正在学习面向对象的PHP。我有几年的过程化经验,但我想让它更上一层楼。
总之,在我干净整洁的代码中,尝试了一些我学到的关于OOP的东西,我尝试了一些我以前从未尝试过的普通PHP Switch语句,在我看来,它像这样工作是非常合乎逻辑的,但它不起作用。
switch(strtoupper($type)) {
case "DELETE" || "UPDATE":
$result['info'] = mysql_affected_rows($this->con);
break;
case "INSERT":
$result['info'] = "Insert Successful";
break;
case "SELECT":
$result['info'] = mysql_num_rows($res);
$result['data'] = mysql_fetch_array($res);
break;
}发生的情况是,第一种情况下,无论$type是否包含"SELECT“,其中带有"or”的那一个都是匹配的。如果我有8个结果都不同的东西,但有2个东西有相同的结果,为什么我不能像这样使用switch呢?
谢谢。
发布于 2011-08-23 05:23:03
使用:
switch(strtoupper($type)) {
case "DELETE":
case "UPDATE":
$result['info'] = mysql_affected_rows($this->con);
break;
case "INSERT":
$result['info'] = "Insert Successful";
break;
case "SELECT":
$result['info'] = mysql_num_rows($res);
$result['data'] = mysql_fetch_array($res);
break;
}开关没有“或”,您必须分别列出每个案例。
发布于 2011-08-23 05:23:22
您应该使用:
case "DELETE":
case "UPDATE":
$result['info'] = mysql_affected_rows($this->con);
break;发布于 2011-08-23 05:24:18
为什么我不能像这样使用开关?
很简单,因为它不是以这种方式工作的。"DELETE" || "UPDATE"是一个表示"string OR string“的表达式,它的计算结果总是布尔型true。
使用@Danae和@Andrej L所示的符号来解决这个问题。
https://stackoverflow.com/questions/7153749
复制相似问题