2017-01-01 1 views
2

私はもっとコードを書いているので、私はPHPを理解し始めています。フィールドIDがvarcharタイプとして指定されているJSONとしてデータを出力しようとしていますが、その中に格納されている値は、 int、およびdoubleを返します。フィールドがPHPスクリプトの特定のタイプの場合、異なる値タイプを出力するにはどうすればよいですか?

ここに私のデータベーステーブルは次のようになります。

map_type  map_value 
----------------------------- 
link   www.google.com 
zoom   18 
lat   32.91 
long   -117.1 

フィールドmap_typemap_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']) 

をただし、出力は空白である、と私はそれが存在しないための理由があると認識するようになりました。

どうすればこのジレンマを解決できますか?

+0

あなたのDB構造は非常に限られており(1つのエントリに限られています)、あなたが本当に望むものではないように思えます。たとえば、 'map_type'は変数をリストしていますが、変数は実際にはDBテーブルの列でなければならないので、複数のマップデータコレクションを持つことはできません。 – Tigger

答えて

3

お探しの機能はfloatvalです。

is_numeric()を使用して、文字列が数字のように見えるかどうかをテストすることもできます。

while($row = mysqli_fetch_assoc($q)) 
{ 
    $value = is_numeric($row['map_value']) ? floatval($row['map_value']) : $row['map_value']; 
    $jsonData[$row['map_type']] = $value; 
} 

それはfloatval()またはintval()を呼び出すかどうかを選択する必要はありません。 PHPは浮動小数点数を整数として扱いません。

+0

ゴールド!...「もっと知っている」:) – Pangu

関連する問題