【发布时间】:2022-01-15 05:12:04
【问题描述】:
我有以下 2 个数组,我需要根据第二个数组的 ID 值添加第一个数组的值作为 Key,以便我可以订购第二个数组 DESC:
$视图:
Array ( [1851] => 12 [14341] => 7 [17834] => 3 )
我有以下数组对象:
$most_seen_list :
Array (
[0] => WP_Post Object (
[ID] => 17834
[post_date] => 2021-10-20 16:01:50
[post_date_gmt] => 2021-10-20 21:01:50
)
[1] => WP_Post Object (
[ID] => 14341
[post_date] => 2021-06-01 17:57:00
[post_date_gmt] => 2021-06-01 22:57:00
)
[2] => WP_Post Object (
[ID] => 1851
[post_date] => 2021-02-13 18:09:00
[post_date_gmt] => 2021-02-13 23:09:00
)
)
下一个 foreach 我正在经历它,我想用我从另一个数组获得的值更改 [0]..[1]..[3] 键:
foreach ($most_seen_list as $key => $value) {
$newResult[$value->ID];
}
预期输出:
Array (
[12] => WP_Post Object (
[ID] => 1851
[post_date] => 2021-02-13 18:09:00
[post_date_gmt] => 2021-02-13 23:09:00
)
[7] => WP_Post Object (
[ID] => 14341
[post_date] => 2021-06-01 17:57:00
[post_date_gmt] => 2021-06-01 22:57:00
)
[3] => WP_Post Object (
[ID] => 17834
[post_date] => 2021-10-20 16:01:50
[post_date_gmt] => 2021-10-20 21:01:50
)
)
【问题讨论】:
-
$newResult[$value->ID];实际上并没有做任何事情。你的意思是赋值吗?例如$newResult[$value->ID] = $key;或许... -
重新排列结果数组是否重要?如果没有,您可以在 $newResult 和 $views 和 array_combine($views, $newResult) 上使用 ksort
-
如果您不需要视图本身作为键,而只需要链接到 WP_Post 的数据,您还可以使用 \SplObjectStorage 将每个视图计数附加到对象 $viewInfo = new SplObjectStorage( ); foreach ($most_seen_list as $key => $post) { $viewInfo->attach($post, $views[$post->ID] ?? null); } ``` 现在你可以使用 $viewInfo[$oneOfThePosts] 来获取视图
-
对帖子数组进行排序后是否需要知道浏览量?否则,您可以将 usort 与知道 $views 并相应排序的回调一起使用。您使用的 PHP 版本是什么?
标签: php arrays sorting foreach