我有一个像以下的php数组:
myarr[1] = "1",
myarr[2] = "1.233",
myarr[3] = "0",
myarr[4] = "2.5"
这些值实际上是字符串,但我希望这个数组按数字排序,同时考虑浮点值并保持索引关联。
请帮帮我。 感谢
答案 0 :(得分:52)
您可以使用普通sort
功能。它需要第二个参数来告诉您如何对其进行排序。选择SORT_NUMERIC
。
示例:
sort($myarr, SORT_NUMERIC);
print_r($myarr);
打印
Array
(
[0] => 0
[1] => 1
[2] => 1.233
[3] => 2.5
)
更新:要维护键值对,请使用asort
(采用相同的参数),示例输出:
Array
(
[3] => 0
[1] => 1
[2] => 1.233
[4] => 2.5
)
答案 1 :(得分:10)
$myarr[1] = "1";
$myarr[2] = "1.233";
$myarr[3] = "0";
$myarr[4] = "2.5";
natsort($myarr);
print_r($myarr);
<强>输出:强>
Array ( [2] => 0 [0] => 1 [1] => 1.233 [3] => 2.5 )
答案 2 :(得分:1)
使用php usort函数,在你的回调函数中将你的字符串转换成浮点数来比较它们。
答案 3 :(得分:0)
您可以将字符串转换为实数(浮点数),然后对它们进行排序:
foreach ($yourArray as $key => $value) {
$yourArray[$key] = floatval($value);
}
sort($yourArray, SORT_NUMERIC);