我正在用natsort($myarray)
对$myarray
进行排序。数组已排序并保留索引号,如下所示。
排序前
Array ( [0] => 2 C [1] => 3 A [2] => 1 B )
排序后
Array ( [2] => 1 B [0] => 2 C [1] => 3 A )
是否可以在不维护索引号的情况下进行排序?排序后,我期望有一个这样的数组:
预期成果
Array ( [0] => 1 B [1] => 2 C [2] => 3 A )
试试这个
<?php
$your_array = array('2 C', '3 A', '1 B');
natsort($your_array);
$your_array = array_values($your_array);
print_r($your_array);
?>
只需使用nasort
和array_values
函数即可。
natsort()
函数使用"自然顺序"对数组进行排序 算法。这些值保留其原始键。
因为nasort
保留键,所以你需要使用 array_values
,它会创建一个具有相对索引的新数组。
过程
$arr = array('0' => '2 C', '1' => '3 A', '2' => '1 B');
natsort($arr);
$arr = array_values($arr);
print_r($arr);
结果
Array
(
[0] => 1 B
[1] => 2 C
[2] => 3 A
)
您可以在获取值后将数组放入新变量中,只能这样。$sorted_new_array = array_values($your_sorted_array);
您可以使用带有自然排序选项的普通排序来执行单行:
sort($array,SORT_NATURAL);
例:
$fruits = array("lemon3", "lemon2", "orange2","orange10", "banana4", "apple9");
sort($fruits,SORT_NATURAL);
print_r($fruits);
数组 ( [0] => 苹果9 [1] => 香蕉4 [2] => 柠檬2 [3] =>柠檬3 [4] => 橙色2 [5] => 橙色10 )
您可以使用 array_values() 重置密钥。
或
排序()
使用这两个函数并创建相同输出的代码:
<?php
$arr = array ('2 C', '3 A', '1 B');
$sorted = array_values($arr);
echo '<pre>';print_r($sorted);echo '</pre>';
sort($arr);
echo '<pre>';print_r($arr);echo '</pre>';
?>
输出:
Array
(
[0] => 2 C
[1] => 3 A
[2] => 1 B
)
Array
(
[0] => 1 B
[1] => 2 C
[2] => 3 A
)
<?php
$arr = array ('2C', '3A', '1B');
//predefined function
uasort($arr,'sortArray');
function sortArray($indexOne, $indexTwo)
{
if($indexOne < $indexTwo)
return -1;
if($indexOne > $indexTwo)
return 1;
if($indexOne == $indexTwo)
return 0;
}
$getResult = array_values($arr);
print_r($getResult);
?>