根据另一个数组的顺序重新排列PHP数组

3

假设有这个数组:

Array
(
[0] => Array
    (
        [title] => this is the newest post
        [ssm_featured_post_id] => 70
    )

[1] => Array
    (
        [title] => sdfsfsdf
        [ssm_featured_post_id] => 63
    )

[2] => Array
    (
        [title] => test
        [ssm_featured_post_id] => 49
    )

[3] => Array
    (
        [title] => Hello world!
        [ssm_featured_post_id] => 1
    )

ssm_featured_post_id的值对应于第二个数组中的数组项的值。我想按照第二个数组中的项的顺序排序第一个数组中的项。

Array
(
    [1] => 63
    [0] => 70
    [3] => 1
    [2] => 49
)

因此,排序后的结果将会是:
Array
(
[0] => Array
    (

        [title] => sdfsfsdf
        [ssm_featured_post_id] => 63
    )

[1] => Array
    (
        [title] => this is the newest post
        [ssm_featured_post_id] => 70
    )

[2] => Array
    (
        [title] => Hello world!
        [ssm_featured_post_id] => 1

    )

[3] => Array
    (
        [title] => test
        [ssm_featured_post_id] => 49
    )

)

从技术上讲,第二个数组在输出中显示的顺序并非实际顺序。值的外观顺序(63、70、1、49)不重要,因为数组的索引(1、0、3、2)是无序的。我想这只是一个格式错误? - JYelton
此处提供解决方案 http://stackoverflow.com/questions/8437076/php-sort-multidimensional-array-by-other-array?rq=1 - paul
我发现了另一个帖子,它回答了我的问题,当我回来时,我看到了所有这些可接受的答案。我该怎么办? - paul
接受其中一个。它们都可以解决你的问题。选择适用于你的问题的那个。 - Patrick White
2个回答

2
更简单的方法是使用usort函数,编写一个函数来比较第一张表中的两个值,该函数使用第二张表。请注意保留HTML标签。

那是一个解决方案,它是否“更简单”取决于实现方式。虽然如此,但是这是一个有效的答案,已被投票。 - Patrick White
是的,也许有更简单的解决方案,但在我看来,这似乎是我会使用的解决方案。 - Korri

1

您可能想要查看array_multisort,特别是其中给出的第三个示例。其思路是基于多维数组的“列”创建数组,然后同时对它们进行排序,并将结果放回原始数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接