在php中排序数字字符串数组

时间:2010-11-02 08:12:08

标签: php arrays

我有一个像以下的php数组:

myarr[1] = "1",
myarr[2] = "1.233",
myarr[3] = "0",
myarr[4] = "2.5"

这些值实际上是字符串,但我希望这个数组按数字排序,同时考虑浮点值并保持索引关联。

请帮帮我。 感谢

4 个答案:

答案 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)

使用natsort()

$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);