在PHP中对数字字符串数组进行排序

37

我有一个PHP数组,例如:

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

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

请帮忙。 谢谢

4个回答

67

你可以使用普通的 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
)

18
使用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 ) 

1
使用 PHP 的 usort 函数,在回调函数中将字符串转换为浮点数进行比较。

0

您可以将字符串转换为实数(浮点数),然后进行排序:

foreach ($yourArray as $key => $value) {
    $yourArray[$key] = floatval($value);
}

sort($yourArray, SORT_NUMERIC);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接