我在 PHP 中有两个数组。第一个数组 ($author_array) 由特定顺序的 user_id 组成,如下所示:(8, 1, 6)
第二个数组($user_results)由一组对象组成,如下所示:
Array
(
[0] => stdClass Object
(
[ID] => 1
[user_login] => user1
)
[1] => stdClass Object
(
[ID] => 6
[user_login] => user6
)
[2] => stdClass Object
(
[ID] => 8
[user_login] => user8
)
)
我想对第二个数组进行“排序”,使其按此顺序排列,这与第一个数组 (8, 1, 6) 中值的顺序相匹配。所以它看起来像这样:
Array
(
[0] => stdClass Object
(
[ID] => 8
[user_login] => user8
)
[1] => stdClass Object
(
[ID] => 1
[user_login] => user1
)
[2] => stdClass Object
(
[ID] => 6
[user_login] => user6
)
)
我不擅长数据结构。我怎么能这样做? :-)
提前感谢您的帮助!
-鲍勃
最佳答案
使用usort并提供自定义比较函数,该函数使用键在“排序”数组中的位置来确定排序顺序,例如像这样的东西:
function cmp($a, $b)
{
global $author_array;
$pos1=array_search ($a->ID, $author_array);
$pos2=array_search ($b->ID, $author_array);
if ($pos1==$pos2)
return 0;
else
return ($pos1 < $pos2 ? -1 : 1);
}
usort($user_results, "cmp");
关于php - 按特定顺序对 PHP 中的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355550/