Similar to this unsolved question
我的 PHP 输出需要启用 JSON_NUMERIC_CHECK
,但是我的数据库中有一个字符串 nick 列,最初需要作为字符串返回。该列中的值可以包含数字,并且没有长度限制。代码示例:
$response["players"] = array();
...
$stmt = $connection->prepare('SELECT id, nick FROM players WHERE NOT id = ? ORDER BY nick');
$stmt->bind_param('i', $_POST["id"]);
$stmt->execute();
$result = $stmt->bind_result($id, $nick);
while ($stmt->fetch()) {
$players = array();
$players["id"] = $id;
$players["nick"] = $nick;
array_push($response["players"], $players);
}
...
echo json_encode($response, JSON_NUMERIC_CHECK);
例如,昵称“007”返回为“7”,我需要它是原始的“007”。删除“JSON_NUMERIC_CHECK”会有所帮助,但它会导致其余代码出现错误。像下面引用的那样使用 Strval() 函数没有帮助。
$result = $stmt->bind_result($id, strval($nick));
$players["nick"] = strval($nick);
最佳答案
不幸的是,在 PHP 中没有显式的变量类型,这使得你的问题不太容易解决。
我有两种解决方案。
1) 如果您喜欢 OOP,请创建一个 Serialized, Arrayable
类作为字符串的容器,并使用返回正确编码值的方法。
2) 首先使用 JSON_NUMERIC_CHECK
进行编码,以确保您的数据符合您的预期,然后解码经过验证的数据,手动将字符串设置为其原始值,然后再次编码,但这不使用 JSON_NUMERIC_CHECK
的时间。
$str = $response['nick'];
$response = json_decode(json_encode( $response, JSON_NUMERIC_CHECK ) );
$response->nick = $str;
$response = json_encode( $response );
关于php - 返回 PHP 中带前导零的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49359902/