繁体   English   中英

问题在 PHP 中格式化 JSON 数组

[英]Issue formatting JSON array in PHP

基本上我有以下条件来组装一个数组 - 问题是它当前创建的数组有太多对象。

$a = 1
$b = 2


if ($a == 1)){
$results[]['id'] = 5;
$results[]['reasons'] = "A issue";
}

if ($b == 1){
$results[]['id'] = 6;
$results[]['reasons'] = "B issue";
}

if ($b == 2){
$results[]['id'] = 6;
$results[]['reasons'] = "B issue";
}
)

$json = json_encode(array($results));
echo $json;

当前结果:

[
  {
    "id": 5
  },
  {
    "reasons": "A issue"
  },
  {
    "id": 6
  },
  {
    "reasons": "B issue"
  }
]

我需要的:

[
  {
    "id": 5,
     "reasons": "A issue"
  },
  {
    "id": 6,
     "reasons": "B issue"
  }
]

如何使用条件正确构建此 JSON 数组?

您使用$results[][$value]这意味着将某些内容推送到数组。

您所要做的就是将$id$reason放入一个数组中,然后将该数组推送到您的结果中,而不是单独的每个项目:

$results[] = [
   'id' => 5,
   'message' => 'A issue'
];

您必须将一个 object 阵列添加到您的阵列中才能做到这一点。 您实际上是在添加字符串和数字。

改变:

$results[]['id'] = 5;
$results[]['reasons'] = "A issue";

至:

$results[] = [
    'id' => 5,
    'reasons' => "A issue"
];

您可以像这样编写此代码:

$a = 1;
$b = 2;


if ($a == 1){
$results[] = ['id'=> 5, 'reasons' => 'A issue'];

}

if ($b == 1){
$results[] =['id'=> 6, 'reasons' => 'B issue'];

}

if ($b == 2){
$results[] =['id'=> 6, 'reasons' => 'B issue'];

}


$json = json_encode($results);
echo $json;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM