我正在学习OOP 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”。如果我有8件事情都有不同的结果,但是有两件事情有相同的结果,为什么我不能像这样使用开关?看起来很垃圾,我必须复制第一个案例。
感谢。
答案 0 :(得分:10)
使用:
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;
}
开关没有“或”,您必须单独列出每个案例。
答案 1 :(得分:2)
您应该使用:
case "DELETE":
case "UPDATE":
$result['info'] = mysql_affected_rows($this->con);
break;
答案 2 :(得分:2)
为什么我不能像这样使用开关?
仅仅因为它不起作用。 "DELETE" || "UPDATE"
是一个表达“字符串OR字符串”的表达式,它总是会计算为布尔值true
。
使用@Danae和@Andrej L所示的符号来解决它。
答案 3 :(得分:1)
像这样:
switch (strtoupper($type)) {
case "DELETE":
case "UPDATE":
$result['info'] = mysql_affected_rows($this->con);
break;
}