我的 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 结果包含整数,但我需要所有值作为字符串的主要内容,如果未能解决你的问题,请参考以下文章

PHP从多个json文件中的键值排序结果

试图读取包含整数的文件并存储在整数向量中,但我不断收到“分段错误(核心转储)”错误

从多个PHP数组创建JSON

PHP、jQuery Ajax 和 json 跨域返回

使用 PHP 从 MySQL 结果输出复杂的 JSON

使用 json rereiver php mysql 在片段中填充列表视图