如果编码打印反向结果在PHP中使用OR

时间:2017-02-02 05:29:19

标签: php

我正在尝试回声结果"好的" if(1 both both both)变量为true,我到目前为止这样做了

<?php
$user_id = $_SESSION['user_id'];
$point= "select points from users where id = $user_id "; // in db right now points = 2000
$flag= "select m_boost from users where id = $user_id "; // in db right now flag = 1
?>
<div class="box border">
<div class="box-title">
<?php
if($point < 1000 || $flag = 0) {
echo "not ok";
} else { ?>
echo "ok";
<?php }?>
</div>

如果我愿意的话,它会正常工作

if(($point == '2000') || ($flag == '0') ){

但是我不想要= $运算符$ point我想要小于&lt; $ point&lt; &#39; 999&#39;

问题是: 继续得到结果&#34;不行&#34;甚至一个变量(flag = 1)在db

中为真
Expected Results:

我想打印&#34;好的&#34; if $ point&gt; 1000或flag == 1,

4 个答案:

答案 0 :(得分:1)

试试这个

当您使用OR条件时,您应该注意条件和登录。你应该在if条件而不是其他条件下实现逻辑。

    if($point > 1000 || $flag ==1) {
        echo "ok";
    }else {
      echo 'Not ok'
    }

或者你想要

if($point < 1000 ) {
        echo "Not ok";
    }else if($flag ==0) {
      echo 'Not ok'
    }esle {
      echo 'ok'
    }

或者你可以这样使用

$a=false;


       if($point < 1000 ) {
                    $a=true;
                }else if($flag ==0) {
                  $a=true;
                }esle {
                  $a=false;
                }
    // you can use this variable in your condition.

    if($a) {
                echo "ok";
            }else {
              echo 'Not ok'
            }

答案 1 :(得分:0)

$flag = 0

您将变量的值设置为0。 例如:

$flag = 1;
if($a < $b || $flag = 0){ //$flag's value is 0 now.
...
...
}

在条件比较中,正确的算子是&#34; ==&#34;。

if($point < 1000 || $flag == 0) {

List of comparison operators

  

但是我不想要= $运算符$ point我想要小于&lt; $ point&lt;   &#39; 999&#39;

没有完全理解你的目标,但也许:

为了检查范围内的值,正确的逻辑运算符应为&#34; and&#34; (&&);

if($point > 0 && $point < 999){

List of logical operators

<强>更新

  

如果$ point&gt; 1000或flag == 1

if($point > 1000 || $flag == 1){
   echo "ok"
}

答案 2 :(得分:0)

当您使用OR时,如果满足第一个条件,则忽略第二个条件。

另外,请确保使用双等号(==)进行比较,而不是单等号(=),这意味着分配。

因此,您想要替换它:

if($point < 1000 || $flag = 0) {

其中一个:

围绕

if($flag == 0 || $point < 1000) {

使用&& INSTEAD

if($point < 1000 && $flag == 0) {

取决于您正在寻找的行为。它有点不清楚 - 所以你的任何额外澄清都会有所帮助。

一旦你得到了你认为有用的东西,试着测试所有可能的组合,这样你就可以确信它的效果如你所愿。

答案 3 :(得分:0)

if (!$flag && $point < 1000)
{
    echo "Not OK";
} else {
    echo "OK";
}

将其写入真值表:

flag        point       result
0           < 1000      Not OK
1           < 1000      OK
0           >=1000      OK
1           >=1000      OK

根据我的问题,现在为我工作

我认为我们都是出于某些贡献的原因,如果你得到解决方案而不是回应,那么标记问题不是一种方式,否则我的问题是100%明确的。