【问题标题】:Sort an array of associative arrays by the order of another array where arrays are different lengths按另一个数组的顺序对关联数组的数组进行排序,其中数组的长度不同
【发布时间】:2013-02-14 15:37:25
【问题描述】:

这是一个很难解释的问题..

按所需顺序排列的类别数组

Array
(
[0] => products
[1] => installation
[2] => software setup
[3] => aftecare & warranty
[4] => other
)

以及另一组问题/答案及其各自的类别 -

Array
(
[installation] => Array
    (
        [0] => Array
            (
                [question] => Third FAQ
                [answer] => Another sample FAQ question
            )

    )

[products] => Array
    (
        [0] => Array
            (
                [question] => Another FAQ
                [answer] => This is a sample FAQ answer.
            )

    )
)

然后我需要对这个数组进行排序,使类别与第一个数组的顺序相同。 (即安装前的产品)

我尝试了 array_multisort() 和 usort(),multisort 抛出一个数组,数组长度不同,而 usort() 需要 cmp 函数返回一个整数,这让我有些难过。

感谢您的帮助。

谢谢

【问题讨论】:

    标签: php arrays multidimensional-array sorting


    【解决方案1】:

    试试这个:

    $flipped_categories = array_flip($categories);
    array_merge($flipped_categories, $product_array);
    

    这应该会为您提供一个数组,其中第一个数组以正确的顺序现在包含每个数组中的常见问题解答。

    【讨论】:

    • 这已经成功了。我知道这会很简单。谢谢。
    • 如果这对你有帮助,请检查upvote区域下的复选标记
    • @JohnDoe 我在等待时间过去
    • 我发誓我发的时候是 18 岁。
    • @djjjuk:很好的答案,+1。:)
    【解决方案2】:

    你可以试试

    $sorted = array();
    foreach ( $data as $name ) {
        foreach ( $data2 as $k => $part ) {
            if ($k == $name) {
                $sorted[$k] = $part;
            }
        }
    }
    
    print_r($sorted);
    

    See Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 2010-10-02
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多