这对我来说似乎是PHP的一个非常神秘的部分,我想知道是否有人可以澄清一下,因为手册中似乎没有包括这一点(或者我在任何地方都找不到它)。
其中的一些东西会返回什么呢?
if($c = mysql_connect($host, $user, $pass)){
echo 'Success';
}else{
echo 'Failure';
}这会因为$c被成功赋值为true或false而总是回显'Success‘吗?我想知道我是否可以这样做,或者我是否必须在前一行上定义$c。
谢谢。
发布于 2011-07-03 07:32:51
它在中提到过
赋值表达式的值是赋值的值。也就是说,"$a = 3“的值是
3。
因此,如果将true分配给$c,则$c = ...将生成true;如果将false分配,则将生成false。
这也是迭代查询结果的原因
while(($row = mysql_fetch_array(...)))很管用。
发布于 2011-07-03 07:37:50
如果有疑问,构建一个测试用例!
构建一个测试用例:
if ( $c = true ) {
echo 'Success';
} else {
echo 'No Success';
}在线运行以下代码:http://codepad.org/jxylNzOu
您将注意到,第一个代码块仅在条件出现true时才会执行(或者在被询问时,PHP的计算结果为true ),因此它不会询问某个值是否成功应用于$c,而是询问应用于$c的值是否为true。
关于您的特定示例的...
在您尝试打开到MySQL的连接的情况下,如果已建立连接,则$c将为true,从而导致运行if-statement的第一个块。否则,如果没有建立连接,$c将为false,使得if-statement的条件为false,从而导致else块的运行。
根据mysql_connect()的the documentation,此函数可以返回以下两项中的一项。
FALSE,,则表示无法建立连接。因此,下面的代码示例之间没有区别
$conn = mysql_connect( $host, $user, $pass );
if ( $conn ) { /*...*/ }和
if ( $conn = mysql_connect( $host, $user, $pass ) {
/*...*/
}发布于 2011-07-03 07:35:58
它并不总是与“成功”相呼应。PHP首先将mysql_connect的结果赋给$to,然后计算$to的布尔值。但最好使用这种方式来确保可理解性:
$c = mysql_connect($host, $user, $pass)
if($to) {
echo 'Success';
} else{
echo 'Failure';
}https://stackoverflow.com/questions/6560163
复制相似问题