2017-04-01 8 views
0

usort()を使用して配列をソートしようとしていますが、機能が動作していないようです。私は、各オブジェクトすなわち、$ myJsonのpartners_orderことによってそれをソートする[0]とJSON配列をソートする$myJson = json_decode($jsonData);PHPを使用してJson Arryを値で並べ替え

PHP関数を使用してデコードされ、その後$ myJson 1別途

は以下の書かれています。

usort($myJson, function($a, $b) {   
return $a->partners->partners_order < $b->partners->partners_order ? -1 : 1; 
}); 

このサイトの制限により、ここに配列を投稿できません。したがって、私は第三者のサイトを使用することを余儀なくされましたfiddlehttps://jsfiddle.net/z8s18c21/

助けてください?

+0

あなたはeval.inをPHPに使うことができます、jsfiddleはPHPでないJavascriptテストです – C2486

+0

'$ a-> partners-> partners_order'の' partners'ビットは配列です。キーを使用する必要があります。あなたの質問に答えることはできません。ソートの仕方がわからないからです。 –

+0

@KIKOSoftware、Qが更新されました。 $ myJson [0]と$ myJson [1]を別々に、それぞれのオブジェクトのpartners_orderでソートしたい –

答えて

1

foreachでオブジェクトをループするとうまくいくと思います。

$myJson = '[ 
{ 
    "title":"1st Inning", 
    "inning_order":0, 
    "partners":[ 
     {"partners_order":3,"partner_1":{"id":1927312,"runs":31},"partner_2":{"id":1462508,"runs":32}}, 
     {"partners_order":1,"partner_1":{"id":1927311,"runs":11},"partner_2":{"id":1462508,"runs":12}}, 
     {"partners_order":2,"partner_1":{"id":1927311,"runs":21},"partner_2":{"id":1462507,"runs":22}} 
    ] 
}, 
{ 
    "title":"2nd Inning", 
    "inning_order":1, 
    "partners":[ 
     {"partners_order":2,"partner_1":{"id":927312,"runs":21},"partner_2":{"id":462508,"runs":22}}, 
     {"partners_order":1,"partner_1":{"id":927311,"runs":11},"partner_2":{"id":462508,"runs":21}}, 
     {"partners_order":3,"partner_1":{"id":927311,"runs":31},"partner_2":{"id":462507,"runs":32}} 
    ] 

} 
]'; 

$read_json = json_decode($myJson); 

foreach ($read_json as $myJson1) { 
    usort($myJson1->partners,function($a, $b) { 
    return $a->partners_order < $b->partners_order ? -1 : 1; 
    }); 
} 

echo '<pre>'; 
print_r($read_json); 
echo '</pre>'; 

データオブジェクトを提供したため、コードがテストされました。

+0

ありがとうございますが動作しません。 'オブジェクト'はすでに私のQに入っています –

+0

まあ、幸運。次回は、あなたの質問を以下のルールに従ってください:https://stackoverflow.com/help/mcveあなたは正しい答えを得るかもしれません。 –

+0

https://eval.in/765866 –

関連する問題