我的 php 文件的 json 结果包含整数,但我需要所有值作为字符串
Posted
技术标签:
【中文标题】我的 php 文件的 json 结果包含整数,但我需要所有值作为字符串【英文标题】:The json result of my php file contains ints but I need all the values as Strings 【发布时间】:2018-06-05 20:27:15 【问题描述】:我从 php 文件中的 mysqlquery 得到的 json 结果如下所示:["ID":1,"comment":"Hello","ID":2,"comment":"SecondHello"]
出于我的目的,我还需要将 ID 作为字符串。
我不能/不想更改数据库中的数据类型。
我必须在我的 php 文件或 Sql 查询中进行哪些更改才能将 ID 作为字符串。
<?php
$host = '';
$db = '';
$user = '';
$pass = '';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
$sql= SELECT * FROM orders
$resultArray = array();
$tempArray = array();
foreach ($pdo->query($sql) as $row)
$tempArray = $row;
array_push($resultArray, $tempArray);
echo json_encode($resultArray);
?>`
【问题讨论】:
转换为字符串是(string)$value
查看***.com/questions/15368753/cast-int-to-varchar
你也可以使用strval。
【参考方案1】:
这段代码呢
$resultArray = array();
$tempArray = array();
foreach ($pdo->query($sql) as $row)
$fields = json_decode($row["jsonFieldName"],1);//decode your json string
foreach($fields as $key=>$field)// read each object..
$field["ID"] = strval($field["ID"]);// change the id property to str
$fields[$key] = $field;// update decoded array
$row["jsonFieldName"] = json_encode($fields);//encode array and update value
array_push($row, $row);
这可能对你有帮助,但这不是一个好方法。
【讨论】:
【参考方案2】:您可以使用array_map
来抓取您的数组并使用strval
将每个元素转换为字符串
foreach ($pdo->query($sql) as $row)
$tempArray = array_map('strval', $row);
array_push($resultArray, $tempArray);
【讨论】:
【参考方案3】:您可以确保添加的每一行都使用strval
...进行转换...
foreach ($pdo->query($sql) as $row)
$tempArray = array_map('strval', $row); // Convert all columns to strings
array_push($resultArray, $tempArray);
在应用于所有列时会增加开销,但会逐列处理(尤其是在 SQL 更改时)
【讨论】:
非常感谢!这为我节省了很多时间!祝你有美好的一天,圣诞快乐!以上是关于我的 php 文件的 json 结果包含整数,但我需要所有值作为字符串的主要内容,如果未能解决你的问题,请参考以下文章