使用PHP按值对json数组排序
我试图使用使用PHP按值对json数组排序,php,json,sorting,Php,Json,Sorting,我试图使用usort()对数组进行排序,但我的函数似乎不起作用。我想按每个对象的partners\u顺序对其排序,即,$myJson[0],然后分别是$myJson 使用$myJson=Json\u decode($jsonData)对Json数组进行解码 下面编写了用于排序的PHP函数 usort($myJson, function($a, $b) { return $a->partners->partners_order < $b->partners-
usort()
对数组进行排序,但我的函数似乎不起作用。我想按每个对象的partners\u顺序对其排序,即,$myJson[0],然后分别是$myJson
使用$myJson=Json\u decode($jsonData)对Json数组进行解码代码>
下面编写了用于排序的PHP函数
usort($myJson, function($a, $b) {
return $a->partners->partners_order < $b->partners->partners_order ? -1 : 1;
});
usort($myJson,函数($a,$b){
返回$a->partners->partners\u order<$b->partners->partners\u order?-1:1;
});
由于本网站的限制,我无法在此发布阵列。因此,我不得不使用第三方网站fiddle
有什么帮助吗?我想如果你用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>';
$myJson=>[
{
“标题”:“第一局”,
“局令”:0,
“合作伙伴”:[
{“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}
]
},
{
“标题”:“第二局”,
“局令”:1,
“合作伙伴”:[
{“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($myJson1){
usort($myJson1->合作伙伴,功能($a,$b){
返回$a->partners\u order<$b->partners\u order?-1:1;
});
}
回声';
打印($read_json);
回声';
代码现在已经过测试,因为您提供了数据对象。您可以在PHP中使用eval.in,JSFIDLE用于Javascript测试而不是phpWithin$a->partners->partners\u order
partners
位是一个数组。你必须用钥匙。我们无法回答您的问题,因为不清楚如何进行排序。@KIKOSoftware,Q已更新。我想按每个对象的partners\u顺序对其排序,即,$myJson[0]和$myJson[1]分别提供一个可测试的php数组,甚至是有效的json@Niklesh好吧,祝你好运。下次试着让你的问题遵循以下规则:你可能会得到一个有效的答案。啊,谢谢,有了数据对象,这很容易做到。我想你一定已经自己找到了这个解决方案,这已经不是一个很大的进步了。