【问题标题】:how to create an associative array from database object and json_encode as object instead of array?如何从数据库对象和 json_encode 创建关联数组作为对象而不是数组?
【发布时间】:2015-07-03 07:03:49
【问题描述】:

我是 PHP 新手,正在使用 Yii 开发应用程序。我有一个数据库对象,其中所有我得到了一个表的所有记录。我想从该对象创建一个关联数组,然后在 json_encode 中对该数组进行编码。但是,我想要的输出是对象而不是数组,并没有到来。有人可以帮忙吗?
我的代码:

$info = array();
$category = Category::find()->all();
foreach($category as $key => $value) {
    $info[]=  array(
         "name" =>$value->name,
         "value" =>$value->description  
    ) ;
} 
echo json_encode($info,JSON_FORCE_OBJECT);

输出

{"0":{"name":"test","value":"A"},"1":{"name":"test 2","value":"B"}}  

期望的输出

{"category":[{"name":"test","value":"A"},{"name":"test 2","value":"B"}]}

【问题讨论】:

  • 不想要的输出是由JSON_FORCE_OBJECT 标志引起的。
  • 后者不是有效的 JSON。需要将一组匿名对象存储在 "[]" 中 - 有效输出为 {"info":[{"name":"test","value":"A"},{"name":"test 2","value":"B"}]}。不过,解析现有输出应该非常容易。每个对象都被正确编码,它只是映射到原始数组索引。
  • @SteveK 你是对的,只是查看了我的要求。我刚刚编辑了这个问题。你能看看并告诉我怎么做吗,请?
  • 谢谢大家,我刚刚找到了我要找的东西。

标签: php arrays json yii


【解决方案1】:

尝试使用这个:

$info2['category']=$info;
echo json_encode($info2);

【讨论】:

    【解决方案2】:

    在 json_encode 之前使用 array_values()

    $info =  array_values($info);
    echo json_encode($info,JSON_FORCE_OBJECT);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多