これが私の声明です:
if($row_x['xfield']==$_POST['x1'] AND $row_x['yfield']==$_POST['y'])
{
echo "ok";
}
else {
echo "invalid";
}
両方が等しくない場合は、'invalid' または 'ok' を表示する必要があります。ただし、この場合、有効かどうかに関係なく「無効」と表示されます。
理由の手がかりはありますか?
これが私の声明です:
if($row_x['xfield']==$_POST['x1'] AND $row_x['yfield']==$_POST['y'])
{
echo "ok";
}
else {
echo "invalid";
}
両方が等しくない場合は、'invalid' または 'ok' を表示する必要があります。ただし、この場合、有効かどうかに関係なく「無効」と表示されます。
理由の手がかりはありますか?
「両方が等しくない場合」と言いました...比較で「==」の代わりに「!=」を使用したいことを暗示しています。&& については、次の 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 にしたいと思うでしょう。したがって、各ステートメントで「!=」を「==」に置き換える必要があります。
に置き換えるAND
と、少なくとも 1 つが等しい場合にOR
表示されますok
それは、それらのいずれかまたは両方が真ではないためです
&&/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
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";
}