0

非常に単純な質問のようですが、ここでは入力値の例として「0888」を使用しています。私はしばらく研究し、次のようなさまざまな方法を試しました

(int) "0888";
intval("0888");
floatval("0888");
settype("0888", "integer");

残念ながら、どれも機能していないようです。参考1 参考2 参考3

$num = $_POST['postcode'];

if((1000 <= $num && $num <= 1999) || (2000 <= $num && $num <= 2599) || (2619 <= $num && $num <= 2898) || (2921 <= $num && $num <= 2999)){
    $state = "NSW";
}
elseif((0200 <= $num && $num <= 0299) || (2600 <= $num && $num <= 2618) || (2900 <= $num && $num <= 2920)){
    $state = "ACT";
}
elseif((3000 <= $num && $num <= 3999) || (8000 <= $num && $num <= 8999)){
    $state = "VIC";
}
elseif((4000 <= $num && $num <= 4999) || (9000 <= $num && $num <= 9999)){
    $state = "QLD";
}
elseif((5000 <= $num && $num <= 5799) || (5800 <= $num && $num <= 5999)){
    $state = "SA";
}
elseif((6000 <= $num && $num <= 6797) || (6800 <= $num && $num <= 6999)){
    $state = "WA";
}
elseif((7000 <= $num && $num <= 7799) || (7800 <= $num && $num <= 7999)){
    $state = "TAS";
}
elseif((0800 <= $num && $num <= 0899) || (0900 <= $num && $num <= 0999)){
    $state = "NT";
}
else {
    $state = "Can not find this postcode record";
}

echo $stateNT が表示されると思っていたのに、実際には「この郵便番号レコードが見つかりません」と表示された場合。誰が問題が何であるか教えてもらえますか?

4

3 に答える 3

0

intvalはデフォルトで文字列$num = intval("0888");を基数 10 で解析するため、文字列を 888 に正しく解析します。トリムする必要はありません。

ただし、if ステートメントの整数リテラルは 8 進数として解釈されます。そこの先行ゼロを削除します。

[...] elseif((800 <= $num && $num <= 899)  [...]
于 2013-09-02T07:06:01.127 に答える