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 に答える