按多维数组值对多维数组进行排序

时间:2016-03-16 22:17:13

标签: php arrays sorting multidimensional-array

我想使用Array 1的'id'数组来排序Array 2中的所有其他兄弟数组.'id'数组应该充当$array1和{{$array2中所有其他数组的模式。 1}}。

通过示例更容易解释。

我有以下数组,数组1:

Array
(
    [id] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 2
        )

    [headline] => Array
        (
            [0] => test 1
            [1] => test 3
            [2] => test 2
        )
)

另一个阵列,阵列2:

Array
(
    [id] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [headline] => Array
        (
            [0] => tc test 1
            [1] => tc test 2
            [2] => tc test 3
        )
)

我希望看起来如下:

Array
(
    [id] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 2
        )

    [headline] => Array
        (
            [0] => tc test 1
            [1] => tc test 3
            [2] => tc test 2
        )

)

现在我试图用foreach语句强制它(并且失败),但必须有更好的方法。

1 个答案:

答案 0 :(得分:1)

这是一种“假”排序,因为我通过foreach()循环填充空数组,然后我替换原始数组:

$array1 = [ 'id' => [ 1,3,2 ], 'headline' => [ 'test 1','test 3','test 2' ] ];
$array2 = [ 'id' => [ 1,2,3 ], 'headline' => [ 'test 1','test 2','test 3' ] ];

$result = array();
foreach( $array1['id'] as $val )
{
    $key = array_search( $val, $array2['id'] );
    $result['id'][]       = $array2['id'][$key];
    $result['headline'][] = $array2['headline'][$key];
}
$array2 = $result;

print_r( $array2 );

输出:

Array
(
    [id] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 2
        )
    [headline] => Array
        (
            [0] => test 1
            [1] => test 3
            [2] => test 2
        )
)

我通过条件'id'数组执行foreach循环,找到要排序的数组中的每个值,检索其键并使用它来为结果数组添加值。

对此解决方案并不感到自豪,但这是。