按自然顺序排序数组而不保留索引号

时间:2016-04-25 09:52:07

标签: php arrays sorting

我正在使用$myarraynatsort($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 )

6 个答案:

答案 0 :(得分:2)

试试这个

<?php
$your_array = array('2 C', '3 A', '1 B'); 
natsort($your_array);
$your_array = array_values($your_array);
print_r($your_array);
?>

答案 1 :(得分:1)

在获取值后,您可以将数组放入新变量中。$ sorted_new_array = array_values($ your_sorted_array);

答案 2 :(得分:1)

您可以使用array_values()重置密钥。

OR

sort()

使用这两个函数并创建相同输出的代码:

<?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
)

答案 3 :(得分:1)

只需使用nasortarray_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);

<强> Rresult

Array
(
    [0] => 1 B
    [1] => 2 C
    [2] => 3 A
)

答案 4 :(得分:1)

您可以使用自然排序选项使用常规排序执行单线程:

sort($array,SORT_NATURAL);

示例:

$fruits = array("lemon3", "lemon2", "orange2","orange10", "banana4", "apple9");
sort($fruits,SORT_NATURAL);
print_r($fruits);
  

阵   (       [0] =&gt; apple9       [1] =&gt; banana4       [2] =&gt; lemon2       [3] =&gt; lemon3       [4] =&gt; orange2       [5] =&gt; orange10   )

答案 5 :(得分:0)

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