我是php的新手。所以它可能是非常基本但我不知道。所以,我想在php中使用json_encode()输出。
"option": [
{
"poOptionGroup": "11",
"optGrpID": "11",
"optGrpName": "Choose Backing Material"
},
{
"optID": "40",
"optName": "Black (Plexiglass)",
"optPriceDiff": "0"
},
{
"optID": "41",
"optName": "Clear (Plexiglass)",
"optPriceDiff": "18"
},
{
"optID": "218",
"optName": "Neon Stand Off",
"optPriceDiff": "18"
},
{
"optID": "219",
"optName": "White Plastic",
"optPriceDiff": "18"
}
],
"option": [
{
"poOptionGroup": "13",
"optGrpID": "13",
"optGrpName": "Any notes you want to include with your order"
},
{
"optID": "174",
"optName": "NO Thanks",
"optPriceDiff": "0"
},
{
"optID": "175",
"optName": "YES OUTDOOR",
"optPriceDiff": "170"
}
],
"SPIN3": [
{
"poOptionGroup": "56",
"optGrpID": "56",
"optGrpName": "Upgrade to OUTDOOR"
},
{
"optID": "44",
"optName": "",
"optPriceDiff": "20.02"
}
]
为此我有两个嵌套的foreach循环。如下:
$product=array();
foreach($query as $q){
$product['optGrpID']= $q['optGrpID'];
$product['optGrpName'] = $q['optGrpName'];
$product['poOptionGroup'] = $q['poOptionGroup'];
$opt_id=$product['optGrpID'];
$string= sql("select optID, optName, optPriceDiff from options where optGroup='$opt_id' ");
foreach ($string as $k=>$s){
$product['options']['optID']=$s['optID'];
$product['options']['optName']=$s['optName'];
$product['options']['optPriceDiff']=$s['optPriceDiff'];
}
}
那么如何实现这个理想的输出呢?请帮忙。任何帮助将不胜感激。
答案 0 :(得分:0)
我正在编写PHP JSON API的过程中,所以我在过去几天遇到了类似的问题。虽然我不能/不想解决有关PHP代码的特定问题,但这是我学到的最重要的事情,我在许多文档或教程中找不到:
给json_encode()
一个关联数组生成一个{key: value, key: value, ...}
的JSON对象。给它一个非关联数组会产生一个[value, value, value, ...]
的JSON列表。后一版本中的值当然可以是他们自己的对象({...}
)。这意味着要获得所需的结构,必须将以下数组传递给json_encode:
array(
"option" => array(
array(
"optId" => "40",
"optName": "Black (Plexiglass)",
"optPriceDiff": "0"
),
array(
"optId" => "40",
"optName": "Black (Plexiglass)",
"optPriceDiff": "0"
),
.......
),
"SPIN3" => array(
array(
"poOptionGroup" => "56",
"optGrpID" => "56",
"optGrpName" => "Upgrade to OUTDOOR"
),
array(
"optID" => "44",
"optName" => "",
"optPriceDiff" => "20.0"
)
)
);
正如您所看到的,其中一些数组是关联数组,其中一些是非关联数组,充当“简单列表”。知道了这一点,应该很容易修改PHP代码以生成如上所示的数组并将其传递给json_encode()
。除非强制json_encode()
始终生成带有标志的JSON对象,否则PHP将处理转换为JSON对象和JSON列表,如上所示。
对于正确的术语:“list”是指JSON数组,而关联数组则使用string-value-links转换为JSON对象。有关详细信息,请参阅JSON website。