php - 返回 PHP 中带前导零的字符串

标签 php leading-zero

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/

相关文章:

php - 单元测试和封装

php - 带有 jQ​​uery 的 Ajax 请求不起作用

javascript - HTML Tidy 在 JavaScript 字符串文字中的脚本标记上失败

python - 使用正则表达式删除字符串中间的前导零

php - Magento addAttributeToFilter,按属性文本过滤

python - 摆脱 Python 中日期字符串的前导零?

Javascript 添加前导零至今

R:读取 .csv 文件会删除前导零

c# - 使用 FileHelpers 填充零

javascript - 在 JavaScript 中使用 IF 处理复选框状态