你错了,它是这样工作的:
if($something == "something")
{
//code
}
if($something == "somethingelse")
{
//code
}
无论$something 等于什么,都将测试上述两者,因为它们是两个独立的 if 语句。所以如果你这样做:
$something = "something";
if($something == "something")
{
echo $something;
}
$something = "somethingelse";
if($something == "somethingelse")
{
echo $something;
}
那么输出将是“somethingsomethingelse”,因为两者都经过测试。请注意,在 if/elseif/else 结构中,将一行代码放在一个块的结尾和另一个块的开头之间会出现语法错误。
if($something == "something")
{
//code
}
else
{
//code
}
在此,将测试第一条语句,如果为真,则将运行该代码。如果为 false,则将出现 else 块中的代码。
if($something == "something")
{
//code
}
elseif($something == "somethingelse")
{
//code
}
else
{
//code
}
在此它将检查第一个 if 语句,如果为真,则该代码运行。如果为假,则检查 elseif 语句,如果为真,则运行该语句。如果为 false,它将运行 else 块。 else 块是一个包罗万象的。
所以在这样的情况下:
if(false)
{
//code
}
elseif(false)
{
//code
}
else
{
//code
}
else 块将始终运行。
类似的事情也发生在多条件语句中,例如:
if(is_string($something) && $something == "something")
如果is_string($something)为假,则不会检查第二个条件,因为在使用AND时它们都必须为真,如果is_string($something)为真而$something == "something"为假,则整个if条件为假, 再次因为它们都必须是真的。
if($something == "something" || $something == "somethingelse")
在这个 OR 语句中,它将检查第一个是否为假,因为一个或另一个必须为真才能使 if 语句为真。因此,如果$something 确实等于"somethingelse",那么 if 语句将被认为是真的。但是,如果$something 确实等于"something",则不会检查第二个条件,因为它已经获得了使语句为真所需的真条件。
所以 if 条件中的 && 条件就像是在做:
if(is_string($something))
{
if($something == "something")
{
//code
}
}
and and || 语句就像在做:
if($something == "something")
{
//code
}
elseif($something == "somethingelse")
{
//same code as previous if statement
}
这是一个例子:
//this would be pulled from a page called like:
//http://www.domain.com/page.php?num=5&num2=10
$num = $_GET['num']; //5
$num2 = $_GET['num2']; //10
if(!is_numeric($num))
{
echo 'Number 1 is not a number, cannot continue <br />';
}
elseif(!is_numeric($num2))
{
echo 'Number 2 is not a number, cannot continue <br />';
}
else
{
if($num > $num2)
{
echo 'Number 1 is bigger than Number 2 <br />';
}
elseif($num2 > $num)
{
echo 'Number 2 is bigger than Number 1 <br />';
}
else
{
echo 'Numbers are equal <br />';
//Since if the numbers are neither greater than or less than each other, they must be equal to one another
}//end if
//% is the modulo operator, basically returns the remainder of division
//so !($num % $num2) is if the remainder of $num / $num2 == 0, I.E. NOT(!) $num % $num2
//! basically makes it take the opposite of the result, so !(0) is true, and 0 is false
//in the same way !(true) is literally NOT true (in other words false)
//and !(false) is literally NOT false (true)
if(!($num % $num2))
{
echo 'Number 1 is a multiple of Number 2 <br />';
}
else
{
echo 'Number 1 is not a multiple of Number 2 <br />';
}//end if
if(!($num2 % $num))
{
echo 'Number 2 is a multiple of Number 1 <br />';
}
else
{
echo 'Number 2 is not a multiple of Number 1 <br />';
}//end if
echo 'The sum of the numbers is ' . $num + $num2;
}//end if
因此,有了这个,并且输入 num=5&num2=10,输出将是
Number 2 is bigger than Number 1
Number 1 is not a multiple of Number 2
Number 2 is a multiple of Number 1 //Note that both of the multiple conditions were tested, because they are separate
The sum of the numbers is 15
如果输入为 num=16&num2=3,则输出为:
Number 1 is bigger than Number 2
Number 1 is not a multiple of Number 2
Number 2 is not a multiple of Number 1
The sum of the numbers is 19
输入 num=16&num2=word,唯一的输出是
Number 2 is not a number, cannot continue
输入为 num=4&num2=4,输出为
Numbers are equal
Number 1 is a multiple of Number 2
Number 2 is a multiple of Number 1
The sum of the numbers is 8