Reputation: 55
I'm using xampp and even though I've set the id column as integer in my table, the output is still string i.e I get "id":"1"
instead of "id":1
. I've come across a possible solution via JSON_NUMERIC_CHECK
but I don't know how to implement this in my php script. Can someone show me how to modify my php script in order to have the id output as an integer.
<?php
require("config.inc.php");
$query_params=null;
$query = "Select * FROM feeds";
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
$response["success"] = 0;
$response["message"] = "Database Error!";
die(json_encode($response));
}
$rows = $stmt->fetchAll();
if ($rows) {
$response["feed"] = array();
foreach ($rows as $row) {
$post = array();
$post["id"] = $row["id"];
$post["name"] = $row["name"];
$post["image"] = $row["image"];
array_push($response["feed"], $post);
}
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No Post Available!";
die(json_encode($response));
}
?>
Upvotes: 3
Views: 8405
Reputation: 360602
json_encode()
goes off whatever PHP says the value's type is:
php > $arr = array('id' => '1');
php > var_dump($arr);
array(1) {
["id"]=>
string(1) "1"
}
php > echo json_encode($arr);
{"id":"1"}
Since your 1
is a string in PHP, it'll be a string in JSON as well. So force it to be an int:
php > $arr = array('id' => (int)'1');
^^^^^-----note the typecast here.
php > var_dump($arr);
array(1) {
["id"]=>
int(1)
}
php > echo json_encode($arr);
{"id":1}
Upvotes: 3
Reputation: 34416
Just add the option to the json_encode()
call -
json_encode( $response, JSON_NUMERIC_CHECK );
Upvotes: 8