2013-12-14 4 views
1

У меня есть сценарий, что дают работает через $ ErrorCode = 0x1 или 0x2 или 0x4 или 0x8 ...PHP Пример кода ошибки 0x1

этот код работает, это дать мне правильный Сообщ статус:

<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>"; 
} 

, что им делать неправильно?

+0

Почему вы сравниваете его с '0x1'? вы имеете в виду строку ''0x1''? –

+0

первый код не сделан мной ... я просто хочу преобразовать код ... –

+0

2 кода верны, что означает, что вторая является «длинной» версией тройной операции выше. Каков контекст этого кода? Вы сохранили его или пытаетесь использовать его в другом контексте/системе? –

ответ

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 на самом деле does is look, какие биты $ errorCode перекрываются с битами 0x1 (двоичный 1). В этом случае он вернет 1 в случае нечетных чисел и 0 в случае четных чисел.

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

Так что если $ ERRORCODE 163, ваш код прямо сейчас заявляет if((1) != 1). Поэтому он должен читать FAIL. Если это не так, посмотрите, если вы поместили свой переписанный код в неправильное место или переменные еще не установлены или что-то еще ...

+0

Значение $ errorCode не равно 0x1, значение $ errorCode = 163, так что нужно что-то вроде if ((163 & 0x1)! = 0x1), но это не работает –

+0

@MateiZoc Я расширил свой ответ более подробно. Все, что я сделал вначале, это сравнение кода, который вы говорите, работает (тернарный) против кода, который вы говорите, не работает (normal if-else). Они должны делать то же самое. –

+0

отлично работает да была моя ошибка, я положил ее в неправильное место –

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

Это должно сделать трюк. В случае это не сработало, попробуйте replaceing '0x1' с 0x1

+0

Вы сравниваете с строкой '0x1', это отличается от исходного кода –

+0

да, но первый код неправильный, я думаю, что он работает на него по ошибке (он не пытается использовать правильные сценарии) –

+1

Я не см. это неправильно ... Я обычно проверяю ошибки по-другому, не используя бит и exadecimals, но кто знает. По сравнению с строкой '0x1' si очень разные. Я бы сравнил с логическим, если бы это был я –

Смежные вопросы