【问题标题】:Yii2: How to convert data type value of a JSON PHP array?Yii2:如何转换 JSON PHP 数组的数据类型值?
【发布时间】:2018-08-09 15:23:25
【问题描述】:

我正在使用 Yii2 框架来创建这个 JSON 数组:

"data": [
  {
    "id": 201,
    "name": "John",
    "age": "30"
  }
]

年龄是一个字符串,我需要它是一个整数,即不带引号。像这样:

"data": [
    {
      "id": 201,
      "name": "John",
      "age": 30
    }
]

这是创建 JSON 数组的 PHP 函数:

$persons['data'] = Persons::find()
    ->select([
        'id',
        'name',
        'age'
    ])
    ->asArray()
    ->all();

【问题讨论】:

  • 可以在make json之前使用Int($age)吗​​?
  • 1/ 你能在创建 JSON 数组之前更改它吗? 2/ 你在哪里需要它是一个整数而不是一个字符串?您也可以在使用它之前更改它。 3/ 如果你在我的 1/ 或 2/ 中做不到,可以尝试一些json_decode($array),将字符串转换为 int 然后json_encode($array) 以像以前一样获取你的数组。

标签: php json yii2 type-conversion


【解决方案1】:

您可以使用JSON_NUMERIC_CHECK 标志作为json_encode()\yii\helpers\Json::encode() 的第二个参数,以便从php 5.3 开始自动转换数字,请参阅here

你可以像

这样使用标志
$data = Persons::find()
    ->select(
      [
         'id',
         'name',
         'age'
      ]
    )
    ->asArray()
    ->all();

$json = \yii\helpers\Json::encode($data,JSON_NUMERIC_CHECK);

【讨论】:

    【解决方案2】:

    如果 Integer 保存在这些字段中,JSON_NUMERIC_CHECK 将使 name 等也为 int。我假设这是在上下文或休息 api 中。您可以覆盖模型中的 fields()。

    public function fields()
    {
        $fields = parent::fields();
        $fields['someProperty'] = function ($model) {
            
            return $model->someOtherProperty + something etc;
        };
        return $fields;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2023-03-27
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多