为什么这个for循环中的变量返回null?

时间:2016-11-28 11:40:03

标签: php database

我有以下代码,它给了我一些时间,为什么for ($x = 1; $x <= $quantity; $x++)循环中的变量在跟随它的数据库插入查询中调用时除了null之外没有返回任何内容,或者当我尝试使用var_dump($cVnum);进行调试时。

以下是代码:

if ($cash >= $product['cost'] * $quantity) {
    // Substract cash
    $receiver = $userData['login'];
    if ($receiver != "") {
        //all variables safe
        $database->setDB("account")->mkquery("UPDATE {{table}} SET ".$cashfield." = (".$cashfield." - ".$product['cost'] * $quantity.") WHERE id = '".$accountid."' LIMIT 1", "account");
        // For each quantity
        for ($x = 1; $x <= $quantity; $x++) {
            // Insert vnums to item_award
            for ($i = 1; $i <= 4; $i++) {
                $cVnum = $product['vnum'.$i];
                if ($cVnum > 0)  {
                    $socket0 = 0;
                    $socket2 = 0;
                    if ($product['vnum'.$i.'_time'] > 0) {
                        if ($cVnum == 72701 || ($cVnum > 71069 && $cVnum < 71075) || ($cVnum > 72722 && $cVnum < 72731)) {
                            $socket2 = $product['vnum'.$i.'_time'];
                        } else if ($cVnum == 47001 ||
                            ($cVnum > 41136 && $cVnum < 41145) ||
                            ($cVnum > 45078 && $cVnum < 45084) ||
                            ($cVnum > 71164 && $cVnum < 71168) ||
                            ($cVnum >= 45139 && $cVnum <= 45144) ||
                            ($cVnum >= 41311 && $cVnum <= 41314)) {
                                $socket0 = time() + ($product['vnum'.$i.'_time']*60*60*24);
                        } else {
                            $socket2 = time() + ($product['vnum'.$i.'_time']*60*60*24);
                        }
                    }
                }
            }
        }                              
        $database->setDB("player");
        $insert = [
            "login" => $receiver, 
            "vnum" => $cVnum, 
            "count" => $quantity, 
            "given_time" => array("func", "NOW()"),
            "socket0" => 22, 
            "mall" => 1
        ];    
        $logok = $database->insert($insert, "item_award");
    }
}

我现在已经待了六个小时了,无法弄清楚出了什么问题。

更新:我缩小了$cVnum = $product['vnum'.$i];问题所在的范围。我注意到当我删除$i并且变为$product['vnum']时,变量返回了我预期的值。可以有一个修复,以便我可以使用$i变量吗?当包含null变量时,为什么会返回$i

1 个答案:

答案 0 :(得分:0)

对于String运算符,如果希望PHP解析变量,则必须使用双引号:li[id$="group-2"] { display:none; }