やりたかったこと
phpから、mysqliでもってSQL実行し取得したときに、データベースでINT型またはFLOAT型になっているのにすべてSTRING型になってしまうので、数値のものは数値として取得したい。なぜかと言うと、最終的にjavascriptに持ってきてid順とかで並べ替えたりするときに、1と2と10が文字列だと1→10→2と並んでしまったりする。いちいちparseIntしなければならない。
最終的なコード(PHP)
// SQL実行
$result = $this->mysqli->query($sql); //何かしらSELECTしてくる
// 連想配列に格納
$data = array(); //格納先
while ($row = $result->fetch_assoc()) { //一行ずつ配列で取得して$dataに入れていく。これはよくある手法
// --- ここから数値変換処理 ---
foreach ( $row as $key => &$value ) {
if(is_numeric($value)) $value *= 1; //すべての要素に対して、数値であれば1を掛けることで自動で型変換してもらう(PHPの仕様)
}
unset($value); //誤作動防止
// --- ここまで ---
$data[] = $row;
}