php nat按值排序关联数组而不使用reindex

mac*_*ict 1 php arrays sorting multidimensional-array

我有以下数组:

$data['array'] = array(
    1 => array(
        'currency_name' => 'USD',
        'totals' => '310.00 USD'
    ),
    24 => array(
        'currency_name' => 'EUR',
        'totals' => '200.00 EUR'
    ),
    26 => array(
        'currency_name' => 'GBP',
        'totals' => '100.00 GBP'
    )
);
Run Code Online (Sandbox Code Playgroud)

我想currency_name按键排序,我使用了以下功能:

// sort the array by currency_name key
$sort = array();
foreach ($data['array'] as $i => $row)
{
    $sort[$i] = $row['currency_name'];
}
array_multisort($sort, SORT_NATURAL, $data['array']);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [array] => Array
        (
            [0] => Array
                (
                    [currency_name] => EUR
                    [totals] => 200.00 EUR
                )

            [1] => Array
                (
                    [currency_name] => GBP
                    [totals] => 100.00 GBP
                )

            [2] => Array
                (
                    [currency_name] => USD
                    [totals] => 310.00 USD
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

预期:

Array
(
    [array] => Array
        (
            [24] => Array
                (
                    [currency_name] => EUR
                    [totals] => 200.00 EUR
                )

            [26] => Array
                (
                    [currency_name] => GBP
                    [totals] => 100.00 GBP
                )

            [1] => Array
                (
                    [currency_name] => USD
                    [totals] => 310.00 USD
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

这是重新索引数组,我不想要.我以后需要这些钥匙.

注:
*我上面采用的方法是这个
*我需要SORT_NATURAL为我使用这个功能对于其他串了.

pNr*_*Nre 6

正如您可以从array_multisort文档中读到的那样,只保留关联(字符串)键.你可以uasort改用.

uasort($data['array'], function($a, $b) {
    return strnatcmp($a['currency_name'], $b['currency_name']);
});
Run Code Online (Sandbox Code Playgroud)