2016-04-14 10 views
0

配列をソートするにはどうすれば値が移動し、インデックスは保持されますか。私は以下のコードを書いたが、答えは理想的ではない。インデックスが移動しないように配列をソートする?

$array = array(6,2,22,15,33,40,30,70,65); 
asort($array,); 
print_r($array); 

これで値はソートされますが、インデックスは値とともに移動します。私は答えを得る。

Array ([1] => 2 [0] => 6 [3] => 15 [2] => 22 [6] => 30 [4] => 33 [5] => 40 [8] => 65 [7] => 70) 

私は次のように示したいと思います。

Array ([0] => 2 [1] => 6 [2] => 15, etc. 

ありがとうございます!

+1

*** ** ssociative sort()* – Rizier123

+5

asort()ではなくsort()を使用してください –

+0

これは逆説的なことです...インデックスはスティックしたいが、 :sort()を使う –

答えて

0

使用array_combine() *

これはキーのセット、および新しい配列の値の集合である第2の一つとして最初に使用して一つに二つの配列をマージします。

したがって、基本的に元のキーとソートされた値を取得し、array_combine()にフィードするだけで済みます。

$a = [ 
    'a' => 'orange', 
    'b' => 'apple', 
    'o' => 'banana', 
]; 

$tmp = $a; 
sort($tmp); 
$result = array_combine(array_keys($a), $tmp); 

var_dump($a, $result); 

hereを試すことができます。

乾杯。


*:PHP 5から入手できます。

関連する問題