2016-04-25 25 views
0

$myarraynatsort($myarray)でソートしています。配列はソートされ、インデックス番号は以下のように維持されます。ソートインデックス番号を維持せずに自然順序で配列を並べ替える

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

前にソート

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

それは、インデックス番号を維持することなくソートすることは可能ですか? 私はこのような配列は、Iソート後に予想:

期待される結果

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

単にarray_valuesおよびソート機能を使用します。 –

答えて

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

あなただけなので.. $ sorted_new_array = array_values($ your_sorted_arrayのような値を取得した後、新たな変数に配列を置くことができます);

2

は、あなたが鍵をリセットするためにarray_values()を使用することができ、この

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

を試してみてください。

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 
) 
+0

配列 –

1

あなたは自然の並べ替えオプションを使用して、通常の並べ替えを使用してワンライナーを行うことができます。

sort($array,SORT_NATURAL); 

例:

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

アレイ ( [0] => apple9 [1] => banana4 [2] => lemon2 [3] => lemon3 [4] => orange2 [5 ] => orange10 )

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

の値を変更しました。これは配列をソートしません。 – Black

+0

<?php $ arr = array( '2C'、 '3A'、 '1B'); //定義済みの関数 uasort($ arr、 'sortArray'); 関数sortArray($ indexOne、$ indexTwo) { if($ indexOne <$ indexTwo) -1を返します。 if($ indexOne> $ indexTwo) return 1; if($ indexOne == $ indexTwo) return 0; } $ getResult = array_values($ arr); print_r($ getResult);このコードをチェックする –

関連する問題