【问题标题】:The json result of my php file contains ints but I need all the values as Strings我的 php 文件的 json 结果包含整数,但我需要所有值作为字符串
【发布时间】: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);
    ?>`

【问题讨论】:

标签: php mysql json


【解决方案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 更改时)

      【讨论】:

      • 非常感谢!这为我节省了很多时间!祝你有美好的一天,圣诞快乐!
      猜你喜欢
      • 2011-09-26
      • 1970-01-01
      • 2021-01-25
      • 2021-04-08
      • 2016-09-18
      • 2014-05-07
      • 2023-03-19
      • 1970-01-01
      • 2016-08-09
      相关资源
      最近更新 更多