2017-04-01 73 views
0

我想使用usort()排序数组。但我的函数似乎不工作。我想通过每个对象即的partners_order对它进行排序,$ myJson [0],然后分别按价值排序Json Arry使用PHP

JSON数组使用$myJson = json_decode($jsonData);

PHP函数进行排序下面被写入解码$ myJson 1

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

由于本网站的限制,我无法在此发布数组。因此我被迫使用第三方网站fiddlehttps://jsfiddle.net/z8s18c21/

请帮忙吗?

+0

您可以使用PHP的eval.in,jsfiddle是用于JavaScript测试而不是php – C2486

+0

在'$ a-> partners-> partners_order'内,'partners'位是一个数组。你必须使用一个密钥。我们无法回答您的问题,因为不清楚应该如何进行分类。 –

+0

@KIKOSoftware,Q已更新。我想按每个对象的'partners_order'对它进行排序,即$ myJson [0],然后分别为$ myJson [1] –

回答

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

谢谢,但没有工作。 'object'已经在我的Q –

+0

好了,祝你好运。下一次尝试使您的问题遵循以下规则:https://stackoverflow.com/help/mcve您可能会得到一个有效的答案。 –

+0

https://eval.in/765866 –