由于您的代码示例,我假设您有一个 JSON 编码的数组。
您不想按值排序,而是按值的特定属性排序。PHP 无法知道您要考虑哪个特定属性。您必须为 PHP 提供一种方法,以使用您自己的函数知道哪个对象在另一个对象前面。然后你可以告诉 PHP 使用该函数进行排序比较,使用usort()
.
$arr = json_decode('
[
{"optionname":"Math","optionid":"35741"},
{"optionname":"Robotics","optionid":"80229"},
{"optionname":"fndbwoiaghoe","optionid":"1105065296"},
{"optionname":"iphewajgiewohfoidsahg","optionid":"1385274203"},
{"optionname":"wpeogagpoar","optionid":"1030886790"},
{"optionname":"genpwaighipwe","optionid":"1193090269"}
]
');
usort($arr, function ($obj1, $obj2) {
return strcasecmp($obj1->optionname, $obj2->optionname);
});
$arr = json_encode($arr);
请注意,上面的代码比较 optionname 属性不区分大小写。如果您希望 PHP 考虑大小写,请替换strcasecmp
为strcmp
.
编辑:如果您使用的 PHP 版本早于 5.3,匿名函数(如用作上述函数的第二个参数的usort()
函数)尚不支持。下面的版本应该可以工作。
$arr = json_decode('
[
{"optionname":"Math","optionid":"35741"},
{"optionname":"Robotics","optionid":"80229"},
{"optionname":"fndbwoiaghoe","optionid":"1105065296"},
{"optionname":"iphewajgiewohfoidsahg","optionid":"1385274203"},
{"optionname":"wpeogagpoar","optionid":"1030886790"},
{"optionname":"genpwaighipwe","optionid":"1193090269"}
]
');
function compareObjects($obj1, $obj2)
{
return strcasecmp($obj1->optionname, $obj2->optionname);
}
usort($arr, 'compareObjects');
$arr = json_encode($arr);