我需要以某种方式打破 if 语句。这是代码
public function userData($data) {
//checks if user is in the database
if (self::checkUserExist($data)==false) {
$userInfo = array();
$userInfo['id'] = (isset($data->id)) ? $data->id : break;
$userInfo['email'] = (isset($data->email)) ? $data->email : break;
$this->conn->insert($userInfo, $Table); // inserts data!
}
}
休息在这里不起作用。我需要返回某种错误。我可以说输入数据无效或其他什么,这样做的重点是避免在数据无效时将数据插入数据库。
中断时
/for 循环。 使用 return false
使用:
public function userData($data) {
if (self::checkUserExist($data)==false && isset($data->id) && isset($data->email)) { //checks if user is in the database
$userInfo = array('id' => $data->id,'email' => $data->email);
$this->conn->insert($userInfo, $Table); // inserts data!
}
}
或者return
或让它变得更糟:goto
.
你不能打破if
;如果这是您的整个代码,您可以使用 return
语句;此外,您不应将其与ternary operator
(? :
')结合使用,因为这会导致解析错误:
PHP Parse error: syntax error, unexpected 'break' (T_BREAK)
PHP Parse error: syntax error, unexpected return (T_RETURN)
另一种方法是使用 goto(我可以听到抨击的声音,但看看这个问题:C 或 C++ 中好的 gotos 示例)
还有一些晦涩难懂的黑客,如 do {
...
} while(0);
这允许您使用 break
,但不使用它 - 这是愚蠢的:)
尝试以下代码:
public function userData($data) {
if (self::checkUserExist($data)==false) { //checks if user is in the database
$userInfo = array();
$userInfo['id'] = (isset($data->id)) ? $data->id : break;
$userInfo['email'] = (isset($data->email)) ? $data->email : break;
if(!$this->conn->insert($userInfo, $Table)){
$message = 'Error';
}else{
$message = 'Success';
}
}
}