0
<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c;

if(is_numeric($a) && is_numeric($b)){
echo "string";
exit();
}

if(!is_numeric($a) && !is_numeric($b)) {
echo "string";
exit();
}

if(isset($a)){
$resultat=$b*2.54;
echo "string " . $c . " string";
exit();
}

if(isset($b)){
$resultat=$a/2.54;
echo "string " . $c . " string";
exit();
}
?>

まず、フォーム フィールド 1 と 2 が数値を保持しているかどうかを確認し、次に両方が値を保持しているかどうかを確認します。それはうまくいきますが、2番目の部分に到達すると、最初の「if」を通過することはありません。常に「a $」が設定されていると見なされます...

ケースを使用する必要がありますか?また ?

4

3 に答える 3

0

をチェックすると、空の文字列が予期されますif(isset($a))。問題は、空かどうかではなく、設定されているかどうかを確認していることです。変数は、インスタンス化するときに最初の行で設定されます。フォームは空の文字列を $_POST に渡しているため、$a が空の文字列ではないことを確認する必要があります。

if ($a !== '') {
    $resultat=$b*2.54;
    echo "string " . $c . " string";
    exit();
}
于 2013-01-09T18:05:02.627 に答える
0

$_POST['a'] に設定されているため、技術的には $a は常に設定されます。したがって、$_POST['a'] が空の場合でも、毎回「設定」されます。これを使用してみてください:

if (!empty($a))

$a が空でないかどうかを確認します。

于 2013-01-09T18:30:45.403 に答える
0

変数 $a の値は $_POST['a'] になります。この値が空の場合、PHP は通知エラーをスローするため、最初に isset を使用する必要があります。

$a = isset($_POST['a']) ? $_POST['a'] : null //Set $a to $_POST['a'] when NOT empty

PHP の isset 関数は、値が null であっても変数が設定されていない場合にのみ true を返します。

2 つ目は、値が null かどうかを確認することです。最適な方法は、緩やかな比較を使用することです。

if ($a == null) {
    echo 'A is emty..';
}

このように値: ""、0、null、および false は「空」と見なされます。

値が実際に null かどうかを知りたい場合は、「=」を 3 つ使った厳密な比較を行います。

if ($a === null) {
    echo 'A is empty';
}
于 2013-01-09T18:43:19.270 に答える