我有以下数组:
$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'
)
);
我想按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']);
输出:
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
)
)
)
预期:
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
)
)
)
这是重新索引数组,我不想要。我以后需要这些钥匙。
注意:
*我上面使用的方法是this
*我需要SORT_NATURAL
,因为我也将此函数用于其他字符串。
答案 0 :(得分:6)
正如您可以从array_multisort
文档中读取的那样,只保留关联(字符串)键。您可以改为使用uasort
。
uasort($data['array'], function($a, $b) {
return strnatcmp($a['currency_name'], $b['currency_name']);
});
答案 1 :(得分:1)
您可以尝试 natcasesort($ array)功能。此函数使用不区分大小写的“自然顺序”算法对数组进行排序。成功时返回TRUE,失败时返回FALSE。