私はもっとコードを書いているので、私はPHPを理解し始めています。フィールドIDがvarchar
タイプとして指定されているJSONとしてデータを出力しようとしていますが、その中に格納されている値は、 int、およびdoubleを返します。フィールドがPHPスクリプトの特定のタイプの場合、異なる値タイプを出力するにはどうすればよいですか?
ここに私のデータベーステーブルは次のようになります。
map_type map_value
-----------------------------
link www.google.com
zoom 18
lat 32.91
long -117.1
フィールドmap_type
とmap_value
はタイプvarchar
です。
私はデータを出力するいくつかの簡単なコードを書いた:、あなたがmap_value
から見ることができるように、文字列の組み合わせがある
{
"link": "www.google.com",
"zoom": "8",
"lat": "32.91",
"long": "-117.1",
}
int型、および:
$sql = "select map_type, map_value from table";
$q = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
//create an array
$jsonData = array();
while($row = mysqli_fetch_assoc($q))
{
$jsonData[$row['map_type']] = $row['map_value'];
}
echo json_encode($jsonData);
、出力を取得ダブルス。
読んだところ、mysqli_fetch_assoc
はデータを文字列として出力するだけなので、必要なフィールド値の戻り値の型を明示的に指定する必要があります。
はしかし、どのように私は別の戻り値の型フィールドmap_value
はタイプvarchar
であるにもかかわらず値を指定することができますか?
"link"の値が文字列、 "zoom"の値がint、 "lat"と "long"の値が文字列の場合、どうすればこの出力を生成できますか?私がこれまでに行うことを試みているものを、PHPを学ぼうとはダブルス
{
"link": "www.google.com",
"zoom": 8,
"lat": 32.91,
"long": -117.1,
}
次のようになります。
1.は、配列内のデータを格納する前に次のコードを追加します。
`$row['map_value'] = doubleval($row['map_value']);`.
を
しかし、 "link"の値は、文字列をdoubleに変換しようとするため、を返します。
2.は、私も何か実行しようとしました:
$row['zoom'] = intval($row['zoom'])
$row['lat'] = doubleval($row['lat'])
$row['long'] = doubleval($row['long'])
をただし、出力は空白である、と私はそれが存在しないための理由があると認識するようになりました。
どうすればこのジレンマを解決できますか?
あなたのDB構造は非常に限られており(1つのエントリに限られています)、あなたが本当に望むものではないように思えます。たとえば、 'map_type'は変数をリストしていますが、変数は実際にはDBテーブルの列でなければならないので、複数のマップデータコレクションを持つことはできません。 – Tigger