2

我有这段代码正在研究,但看不到某行的目的。

public function insertRecords($table, $data){
    //setup some variables for fields and values
    $fields = "";
    $values = "";

    //populate them
    foreach($data as $f => $v){
        $fields .= "`$f`,";
        $values .= (is_numeric($v) && (intval($v) == $v)) ? $v . "," : "'$v',";
    }

    //remove our trailing ,
    $fields = substr($fields, 0, -1);
    //remove our trailing ,
    $values = substr($values, 0, -1);

    $insert = "INSERT INTO $table ({$fields}) values({$values})";
    //echo $insert
    $this->executeQuery($insert);
    return true;
}

我看不到以下目的:

intval($v) == $v))

在三元运算符中。我的理解是,如果 $v 的整数值与 $v 相同,那么做废话。当然,$v 的整数值将等于 $v。它是当前迭代中的当前值。我的理解不正确吗?

我已经知道,如果 intval() 不返回整数,则它默认为三元运算符中的字符串。

4

3 回答 3

1

你的假设是正确的。

该行只是一种检查变量 $v 是否确实是整数的方法。因为如果它是任何其他数据类型,则该值将与该 intval() 操作不同。

于 2013-06-13T23:55:56.273 回答
0

它使用intval()只是因为它正在检查输入的值是否为整数而不是字符串,对于列数据类型和出于安全目的,您的查询中不允许使用该字符串

intval — 获取变量的整数值

于 2013-06-13T23:56:14.077 回答
0

is_numeric($v)如果 $v 是数字(例如 234233)或数字字符串(例如 "234233"),则intval($v) == $v返回 true,而如果 $v 是整数,则返回 true。

第一个确保 $v 在任何方面都是一个数字,第二个检查 $v 是否是一个整数。

我想你可以放弃is_numeric($v)

于 2013-06-14T00:02:06.857 回答