0

私は次のコードを持っています:

switch ((int)$_GET["loanprovider"]) {
    case ((int)$_GET["loanprovider"] > 1):
        $sql_loanprovider1a = " l.id in (select la.loanid from loan_approvals la where la.bankid = ".$_GET["loanprovider"].") and";
        $sql_loanprovider1b = " l.loanid in (select la.loanid from loan_approvals la where la.bankid = ".$_GET["loanprovider"].") and";
        break;
    default:
        break;
}

URLにLOANPROVIDERを設定せずにページを実行すると、SWITCHはDEFAULTではなく最初のケースに入ります。どうして??

/ボブ

4

4 に答える 4

0

$_GET["loanprovider"] が設定されているかどうかを最初に確認します。これは、URL に Loanprovider を設定しないと未定義になり、未定義が「0」である必要がないため、別のものになる可能性があるためです。この場合、おそらくステートメント ((int)$_GET["loanprovider"] > 1): true を作成する値になります。

正しいコードは次のようになります。

if (isset((int)$_GET["loanprovider"]))
{
  switch ((int)$_GET["loanprovider"]) {
    case ((int)$_GET["loanprovider"] > 1):
        $sql_loanprovider1a = " l.id in (select la.loanid from loan_approvals la where la.bankid = ".$_GET["loanprovider"].") and";
        $sql_loanprovider1b = " l.loanid in (select la.loanid from loan_approvals la where la.bankid = ".$_GET["loanprovider"].") and";
        break;
    default:
        break;
  }
}  
于 2013-09-23T15:25:29.753 に答える