200 を超えるアイテムを含む大きな JSON ファイルがあります。その中には5つのグループデータがあります。各グループには少なくとも 30 個のアイテムがあります。json データの"p" tag
ように、を使用してそれらを区別します。"p":"1","p":"2","p":"3","p":"4","p":"5"
今、私は各グループから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 つの果物を組み合わせて、混合注文を取得します。ありがとう。