在PHP中按对象id对数组排序
我有一个需要按父对象排序的对象数组(从最低到最高) 以下是阵列的结构:在PHP中按对象id对数组排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个需要按父对象排序的对象数组(从最低到最高) 以下是阵列的结构: [{ "term_id": 9, "name": "pve", "slug": "pve", "term_group": 0, "term_taxonomy_id": 9, "taxonomy": "post_tag", "description": "pve guides", "parent": 15, "count": 0, "filter": "raw" }, { "term
[{
"term_id": 9,
"name": "pve",
"slug": "pve",
"term_group": 0,
"term_taxonomy_id": 9,
"taxonomy": "post_tag",
"description": "pve guides",
"parent": 15,
"count": 0,
"filter": "raw"
}, {
"term_id": 8,
"name": "pvp",
"slug": "pvp",
"term_group": 0,
"term_taxonomy_id": 8,
"taxonomy": "post_tag",
"description": "pvp guides",
"parent": 15,
"count": 2,
"filter": "raw"
}, {
"term_id": 11,
"name": "greataxe",
"slug": "greataxe",
"term_group": 0,
"term_taxonomy_id": 11,
"taxonomy": "post_tag",
"description": "greataxe guides",
"parent": 14,
"count": 1,
"filter": "raw"
}, {
"term_id": 12,
"name": "musket",
"slug": "musket",
"term_group": 0,
"term_taxonomy_id": 12,
"taxonomy": "post_tag",
"description": "musket guides",
"parent": 14,
"count": 0,
"filter": "raw"
}, {
"term_id": 13,
"name": "spear",
"slug": "spear",
"term_group": 0,
"term_taxonomy_id": 13,
"taxonomy": "post_tag",
"description": "",
"parent": 14,
"count": 1,
"filter": "raw"
}, {
"term_id": 10,
"name": "sword",
"slug": "sword",
"term_group": 0,
"term_taxonomy_id": 10,
"taxonomy": "post_tag",
"description": "sword guides",
"parent": 14,
"count": 0,
"filter": "raw"
}, {
"term_id": 15,
"name": "Play Type",
"slug": "playtype",
"term_group": 0,
"term_taxonomy_id": 15,
"taxonomy": "post_tag",
"description": "",
"parent": 0,
"count": 0,
"filter": "raw"
}, {
"term_id": 14,
"name": "Weapons",
"slug": "weapons",
"term_group": 0,
"term_taxonomy_id": 14,
"taxonomy": "post_tag",
"description": "",
"parent": 0,
"count": 0,
"filter": "raw"
}]
我试着用下面的方法来分类
$new_array = usort($tags, function($a, $b) {
return $b->parent - $a->parent;
})
我想要的结果是一个数组,它按父级重新组织数组(因此父级为0的所有对象都位于顶部)。相反,我得到的是返回的值true
任何帮助都将不胜感激。usort()直接在提供的数组上执行排序。返回值仅返回布尔值,告知排序是否成功
此外,
如果第一个参数分别小于、等于或大于第二个参数,则比较函数必须返回小于、等于或大于零的整数
因此,您应该提供$a->parent-$b->parent
,以便按升序对项目进行排序
usort($tags,function($a,$b){
返回$a->parent-$b->parent;
});
$new_数组=$tags;//$tags现在已排序
在适当位置修改阵列。否则,您的代码看起来很好,除非它应该是$a->parent-$b->parent
,如果我没有弄错的话。所有排序函数都已就绪。