【问题标题】:PHP Error Code example 0x1PHP 错误代码示例 0x1
【发布时间】:2013-12-14 08:10:30
【问题描述】:

我有一个脚本,它通过 $ErrorCode = 0x1 或 0x2 或 0x4 或 0x8 ...

此代码正在运行,为我提供正确的状态消息:

<div class="left_content">Submit:</div>
<div class="right_content">
    <?php echo ($errorCode & 0x1) != 0x1 
            ? "<span class='green'>Ok</span>" 
            : "<span class='red'>Fail</span>"; ?>
</div>

但是我尝试用这个来改变代码,但是这个代码在所有的时候状态消息都是“Ok”,即使是失败

if(($errorCode & 0x1) != 0x1 ) 
{ 
    $Error_0x1 = "<span class='green'>Ok</span>";  
} else 
{ 
    $Error_0x1 = "<span class='red'>Fail</span>"; 
}

我做错了什么?

【问题讨论】:

  • 你为什么要把它和0x1比较?你的意思是字符串'0x1'
  • 第一个代码不是我做的...我只是想转换代码...
  • 这2个代码是正确的,意思是第二个是上面三元运算的“长”版本。这段代码的上下文是什么?您是保留它还是尝试在另一个上下文/系统中使用它?
  • 您遇到错误了吗?
  • 使用相同的 $errorCode 它们更多的是 0x1 和 0x2 以及 0x4 和 0x8 ... $errorCode 的总值是 163,所以如果 0x1 在 $errorCode 上显示真或失败 ...在这样的类上添加了错误:$this->error+=0x80;

标签: php


【解决方案1】:

查看您的代码,我想念的只是实际的echo $Error_0x1; 和周围的 HTML 标记。

所以这应该是你的全部代码:

<?php
    if(($errorCode & 0x1) != 0x1 )
    {
        $Error_0x1 = "<span class='green'>Ok</span>";
    } else
    {
        $Error_0x1 = "<span class='red'>Fail</span>";
    }
?>
<div class="left_content">Submit:</div>
<div class="right_content">
    <?php echo $Error_0x1; ?>
</div>

顺便说一句...0x1 只是表示二进制格式的 1。

$errorCode & 0x1 实际上所做的是查看 $errorCode 的哪些位与 0x1(二进制 1)的位重叠。在这种情况下,奇数返回 1,偶数返回 0。

163: 10100011
0x1: 00000001 &
---------------
     00000001

因此,如果 $errorCode 为 163,则您的代码现在声明为 if( (1) != 1)。所以它应该读为FAIL。如果没有,请查看您是否将重写的代码放在错误的位置,或者尚未设置变量或其他什么...

【讨论】:

  • $errorCode 的值不是 0x1,$errorCode 的值 = 163 所以需要类似 if((163 & 0x1) != 0x1) 的东西,但这不起作用
  • @MateiZoc 我更详细地扩展了我的答案。我首先要做的就是将你说的代码(三元)与你说的代码不工作(正常的 if-else)进行比较。他们也应该这样做。
【解决方案2】:
if(($errorCode != '0x1' ) 
{ 
    $Error_0x1 = "<span class='green'>Ok</span>";  
} else 
{ 
    $Error_0x1 = "<span class='red'>Fail</span>"; 
}

这应该可以解决问题。 如果它不起作用,请尝试将 '0x1' 替换为 0x1

【讨论】:

  • 你在比较字符串'0x1',这和原来的代码不同
  • 是的,但第一个代码不正确,我猜它错误地为他工作(他没有尝试正确的场景)
  • 我没看错...我通常以不同的方式检查错误,不使用位和十进制,但谁知道呢。与字符串 '0x1' 相比,si 完全不同。如果是我,我会与布尔值进行比较
  • 我尝试了代码但不工作 $errorCode 不是 0x1,相同的 $errorCode 它们更多是 0x1 和 0x2 以及 0x4 和 0x8 ... $errorCode 的总值是 163,所以如果 0x1 在 $errorCode 上以显示 true 或 fail ... 在这样的类上添加错误:$this->error+=0x80;
猜你喜欢
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2016-03-15
  • 2016-04-11
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多