gpt4 book ai didi

PHP开关和大小写逻辑控制

转载 作者:行者123 更新时间:2023-12-05 09:24:55 24 4
gpt4 key购买 nike

是否可以对大小写进行逻辑控制?

即:

$v = 0;
$s = 1;

switch($v)
{
case $s < $v:
// Do some operation
break;
case $s > $v:
// Do some other operation
break;
}

有没有办法做类似的事情?

最佳答案

传递给 switch 的条件是与案例进行比较的值。条件(在您的问题 $v 中)被评估一次,然后 PHP 寻找第一个与结果匹配的情况。

From the manual (在示例 #2 之后)强调:

The switch statement executes line by line (actually, statement by statement). In the beginning, no code is executed. Only when a case statement is found with a value that matches the value of the switch expression does PHP begin to execute the statements. PHP continues to execute the statements until the end of the switch block, or the first time it sees a break statement.

在您的问题中,switch ($v) 与您编写的相同:switch (0),因为 $v = 0。然后,您的开关将尝试找到等于 0 的情况。并且,就像 @Kris said 一样。 :

$s < $v evaluates to false, which triggers on the $v because it is 0 in here.


如果你必须在 case 语句中使用条件,你的 switch-condition 应该是一个 bool 值,例如:

$v = 0;
$s = 1;

switch (true) {
case ($s < $v):
echo 's is smaller than v';
break;

case ($s > $v):
echo 's is bigger than v';
break;
}

现在您的 switch 尝试寻找第一个计算结果为 true 的情况,在本例中为 $s > $v


请注意,虽然 switch-condition 只被评估一次,但 case 是按顺序评估的:

$a = 1;

switch ($a) {
case 2:
echo 'two';
break;
case (++$a > 2):
break;
default:
echo $a;
}

从 default-case 回显 '2',因为当比较 $a 和 "2"时 $a 是 1 并且大小写被丢弃;同时:

$a = 1;

switch ($a) {
case (++$a > 2):
break;
case 2:
echo 'two';
break;

default:
echo $a;
}

从 case '2' 回显 'two' 因为 ++$a > 2 增加 $a 但不匹配 $a。

default 是后备,它的位置无关紧要。

注意:上述开关既难看又深奥,仅作为示例证明提供。

关于PHP开关和大小写逻辑控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com