我有一个包含 200 多个项目的大型 JSON 文件。里面有5组数据。每个组至少有 30 个项目。我使用 来区分它们"p" tag
,就像"p":"1","p":"2","p":"3","p":"4","p":"5"
在 json 数据中一样。现在我想从每组中获得 2 件物品,总共 10 件物品,随机订单。
为了便于解释,我设置了一些简单的数据,如下所示。"p":"1" 在其组中有 4 个项目,"p":"2" 在其组中有 4 个项目。
现在如何从随机订单中获取 2 件商品"p":"1"
和 2 件商品?"p":"2"
$json = <<<ETO
[
{
"a":"apple",
"p":"1"
},
{
"a":"orange",
"p":"1"
},
{
"a":"pear",
"p":"1"
},
{
"a":"banana",
"p":"1"
},
{
"a":"Chauli",
"p":"2"
},
{
"a":"Carrot",
"p":"2"
},
{
"a":"Lettuce",
"p":"2"
},
{
"a":"Potato",
"p":"2"
}
]
ETO;
$data = json_decode($json);
shuffle($data);// some shuffle like this is very ugly...
foreach($data as $row){
$aoo = 1;
$boo = 1;
if($row->p==1){
echo $row->p.': '.$row->a.'<br />';
$aoo++;
if($aoo==2){
break;
}
}
if($row->p==2){
echo $row->p.': '.$row->b.'<br />';
$boo++;
if($boo==2){
break;
}
}
}
我需要得到如下结果:
orange ("p":"1") Carrot ("p":"2") pear ("p":"1") Lettuce ("p":"2")
Lettuce ("p":"2") banana ("p":"1") Apple ("p":"1") Chauli ("p":"2")
总之,获得 2 个蔬菜和 2 个水果的混合订单。谢谢。