晚上很晚,一直在看着这个时间太长的家伙。

这是键顺序正确的数组。

Array
(
    [FirstName] => 'Timmy'
    [LastName] => 'O Toole'
    [Address] => 'Nowhere'
    [Tel] => '12345'
    [Email] => 'nonone@nowhere.com'
)


我希望以下数组中的每个记录都与上述键顺序匹配。

(
    [0] => Array
        (
            [FirstName] => 'Robin'
            [Address] => 'Cave'
            [LastName] => 'Mactimmy'
            [Tel] => '9076'
            [Email] => 'i@o.com'
        )

    [1] => Array
        (
            [Address] => 'uytr'
            [FirstName] => 'Bill'
            [Email] => 'j@k.com'
            [LastName] => 'Gates'
            [Tel] => '7654'
        )

    [2] => Array
        (
            [LastName] => 'Mahoney'
            [Email] => 'y@i.ie'
            [FirstName] => 'Tom'
            [Tel] => '5689'
            [Address] => 'kklll'
        )
)


我也尝试过ksort和usort,但是数组排序似乎没有更新。

最佳答案

基本数据

$array = [
    0 => Array
        (
            'FirstName' => 'Robin',
            'Address' => 'Cave',
            'LastName' => 'Mactimmy',
            'Tel' => '9076',
            'Email' => 'i@o.com',
        ),

    1 => Array
        (
            'Address' => 'uytr',
            'FirstName' => 'Bill',
            'Email' => 'j@k.com',
            'LastName' => 'Gates',
            'Tel' => '7654',
        ),

    2 => Array
        (
            'LastName' => 'Mahoney',
            'Email' => 'y@i.ie',
            'FirstName' => 'Tom',
            'Tel' => '5689',
            'Address' => 'kklll',
        )
];


我认为这是一个很好的解决方案:

<?php

$order = [ 'FirstName', 'LastName', 'Address', 'Tel', 'Email'];

$result = [];
foreach ($array as $sortable) {
    $result[] = array_merge(array_flip($order), $sortable);
}

print_r($result);

08-26 00:45
查看更多