1

これが私の声明です:

if($row_x['xfield']==$_POST['x1'] AND $row_x['yfield']==$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}

両方が等しくない場合は、'invalid' または 'ok' を表示する必要があります。ただし、この場合、有効かどうかに関係なく「無効」と表示されます。

理由の手がかりはありますか?

4

4 に答える 4

2

「両方が等しくない場合」と言いました...比較で「==」の代わりに「!=」を使用したいことを暗示しています。&& については、次の T/F チャートを参照してください。

--------------
| X | && | Y |
--------------
| F | F  | F |
--------------
| F | F  | T |
--------------
| T | F  | F |
--------------
| T | T  | T |
--------------

X ステートメントが真である必要があり、かつ Y ステートメントが真である必要があります。あなたの例では

$row_x['xfield']==$_POST['x1']

TRUE である必要があります。

$row_x['yfield']==$_POST['y']

しかし、あなたの質問を読んだら、「無効」を示すために両方のステートメントを FALSE にしたいと思うでしょう。したがって、各ステートメントで「!=」を「==」に置き換える必要があります。

于 2012-09-25T08:28:57.233 に答える
1

に置き換えるANDと、少なくとも 1 つが等しい場合にOR表示されますok

于 2012-09-25T08:32:17.460 に答える
1

それは、それらのいずれかまたは両方が真ではないためです

&&/AND を使用しているため、else の結果が得られるため、両方が一致する必要があります。これは、いずれかが等しくないか、両方が一致しないことを意味します。

以下の方法で確認できます

if($row_x['xfield']==$_POST['x1']){
   echo ' xfiekd  is = to x1';
   if($row_x['yfield']==$_POST['y']){
     echo ' yfiekd  is = to y and aslo 1 is true';
   }else{ echo 'y is false' }


}
else{
   echo ' xfiekd  is = to x1' is false;
   if($row_x['yfield']==$_POST['y']){
     echo ' yfiekd  is = to y and aslo 1 is true';
   }else{ echo 'y is false' }


}

||ANDの代わりに を使用する必要がある少なくとも 1 つの条件が true の if 関数本体に入る

AND と OR の違い

AND の真理値表

  a    b

true  true   = true
true  false  = false
false  false = false
false  true  = false

OR の真理値表

  a    b

true  true   = true
true  false  = true
false true   = true
false false  = true
true  false  = true
于 2012-09-25T08:31:56.057 に答える
0
if($row_x['xfield']==$_POST['x1'] OR $row_x['yfield']==$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}

if($row_x['xfield']!=$_POST['x1'] AND $row_x['yfield']!=$_POST['y'])
{
   echo "ok";
}
else {
   echo "invalid";
}
于 2012-09-25T08:35:15.127 に答える