我有一个StdClass数组。每个对象都是这样排序的(数组中有大约50个对象,但我想我只是用一个来显示结构):
stdClass Object (
[display_name] => Bob Simons
[post_title] => Lesson 1
[meta_value] => 100
[comment_approved] => passed
[c_num2] => 26
[term_id] => 3
)
我有另一个看起来像这样的数组:
Array (
[0] => 3
[1] => 4
[2] => 5
[3] => 16
[4] => 17
[5] => 18
[6] => 19
[7] => 20
[8] => 21
)
第二个数组根据[term_id]字段定义第一个数组的排序。基本上,[term_id] 3的所有内容都应位于数组的顶部,[term_id] 4的所有内容都应该是下一个,所有内容都基于第二个数组。
我正在拼命想弄清楚如何做到这一点,我一直在看着类似的东西,但完全失去了。
我希望有人可以提供帮助,我将非常感激。
答案 0 :(得分:0)
试试这个
$sortedArray = [];
foreach ($order as $termId) {
foreach ($objects as $object) {
if ($object->term_id == $termId) {
$sortedArray[] = $object;
}
}
}
$objects
包含您的stdClass实例和$order
您的列表,其中包含有序的术语ID。
如果term_id应始终以升序排序,您可以使用usort:
usort($objects, function ($obj1, $obj2) {
if ($obj1->term_id == $obj2->term_id) {
return 0;
}
return ($obj1->term_id < $obj2->term_id) ? -1 : 1;
});