变量具有意外值

问题描述

| 我有这个问题。我不知道我是不是太累了,还是有些东西不起作用。 我的代码是:
$sX = ($nr == 1 or $nr == 4 or $nr == 7 ? \"0\" : ($nr == 2 or $nr == 5 or $nr == 8 ? \"200\" : \"400\"));
$sY = ($nr == 1 or $nr == 2 or $nr == 3 ? \"0\" : ($nr == 4 or $nr == 5 or $nr == 6 ? \"200\" : \"400\"));
$nr
[1..9]
范围内的整数(处于循环中)。在该语句下方的第一行,我输出了这两个变量。然后它们都是
\"1\"
null
。为什么?我只是看不到它:( 谢谢 浮点数     

解决方法

        这是因为三元运算符的优先级高于逻辑“ 5”。在所有
x or y or z
零件的周围加上括号。换句话说,您最好将该表达式编写为:
$sX = ($nr == 1 or $nr == 4 or ($nr == 7 ? \"0\" : ($nr == 2 or $nr == 5 or ($nr == 8 ? \"200\" : \"400\"))));
第二个相同。 参考:http://php.net/language.operators.precedence     ,        直接的答案就如SimpleCoder所说:您需要修正运算符的优先级。 这可以通过使用
||
而不是
or
来完成:
$sX = ($nr == 1 || $nr == 4 || $nr == 7 ? \"0\" :
  ($nr == 2 || $nr == 5 || $nr == 8 ? \"200\" : \"400\"));
或加上括号(恕我直言更好,因为它很简单):
$sX = (($nr == 1 or $nr == 4 or $nr == 7) ? \"0\" :
  (($nr == 2 or $nr == 5 or $nr == 8) ? \"200\" : \"400\"));
或者,甚至更好,重写代码使其更简单:
switch($nr % 3) {
    case 1:
        $sX = \"0\";
        break;
    case 2:
        $sX = \"200\";
        break;
    default:
        $sX = \"400\";
}
    ,        这可能是一个简短的示例,应该可以解决您的问题:
$sX = ($nr-1)%3 * 200;
$sY = floor(($nr-1)/3) * 200;
    ,        我认为您想尝试的是:
$sX = (($nr == 1 or $nr == 4 or $nr == 7) ? \"0\" : (($nr == 2 or $nr == 5 or $nr == 8) ? \"200\" : \"400\"));
希望能有所帮助。 也可以尝试使用ѭ15see准确查看正在计算的内容。     ,        只需使用
||
而不是
or
。它具有更明显的优先级,并且可以执行您想要的操作。否则,请使用括号准确指定您的期望。 话虽这么说,该语句还是很难理解的,您应该将其分解为if / else块。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...