使用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 orderpartners
位是一个数组。你必须用钥匙。我们无法回答您的问题,因为不清楚如何进行排序。@KIKOSoftware,Q已更新。我想按每个对象的
partners\u顺序对其排序,即,$myJson[0]和$myJson[1]分别提供一个可测试的php数组,甚至是有效的json@Niklesh好吧,祝你好运。下次试着让你的问题遵循以下规则:你可能会得到一个有效的答案。啊,谢谢,有了数据对象,这很容易做到。我想你一定已经自己找到了这个解决方案,这已经不是一个很大的进步了。