2012-03-30 8 views
4

私の配列から3つの値を取得したいが、それはまたキーによっても正しくソートされるべきである。配列から3つの最高値を取得

私はこのコードを持っている:

<?php 
$a = array(130, 1805, 1337); 
arsort($a); 
print_r($a); 
?> 

上記の出力は以下の通りです:

Array 
(
    [1] => 1805 
    [2] => 1337 
    [0] => 130 
) 

ITSは正常に動作し、私はそれがadditionaly最高から最低までそのキーをソートしたいです値。

例:

Array 
(
    [2] => 1805 
    [1] => 1337 
    [0] => 130 
) 

明確にする:最高値、配列のキー番号0が常に使用されるため、アレイキー番号2が常に使用されます。私はそれがキーでソートすることがしたいですの値はです。

どうすればいいですか?

/あなたが何かを理解していない場合はお知らせください。

+0

正しく値***と*キーでソートここでの回答のいずれかをしました* *? –

答えて

7
rsort($array); 
$top3 = array_reverse(array_slice($array, 0, 3)); 
+0

@Cycloneの注意点として、@decezeが指摘した 'array_slice'を使うと、上位3つの値だけが返されます。 _all_の値に影響を与えたい場合は、そのままにしておきます。 – hohner

+0

さて、* 3つの最高値*は、OPが求めているものです... – deceze

+2

そして、downvoterによるコメントは素晴らしいでしょう。 – deceze

2

これにはarray_reverseを使用してください。

<?php 
$a = array(130, 1805, 1337); 
arsort($a); 
print_r(array_reverse($a)); 
?> 

は簡単に最高値を取得する$a[0]$a[1]$[2]によってアクセス。

1
$a = array(130, 1805, 1337); 
arsort($a); 
array_reverse($a); 

生成します:

Array 
(
    [2] => 1807 
    [1] => 1337 
    [0] => 130 
) 

をあなたはそれhereについての詳細を調べることができます。

+1

ちょうど注: 'array_reverse()'は元の配列を変更しません。逆の配列を返します。そのため、変数にキャッチする必要があります。 – animuson

+0

動作しません(http://ideone.com/LUERG)? –

0

私がしようとするだろう:

<?php 
$a = array(130, 1805, 1337); 
arsort($a); 
$a = array_reverse($a); 
0

私は(IDEOne.com経由でテストした)あなたは既に投稿答えのいずれかで説明した出力を得ることができませんでした。ここで


は、私の解決策(demo)です:

$a = array(130, 1805, 1337); 

$keys = array_keys($a); rsort($keys, SORT_NUMERIC); 
$values = array_values($a); rsort($values, SORT_NUMERIC); 

$a = array_combine(array_slice($keys, 0, 3), array_slice($values, 0, 3)); 

print_r($a); 

出力:

Array 
(
    [2] => 1805 
    [1] => 1337 
    [0] => 130 
) 
0
<?php 

$array = array(130, 1805, 1337); 
sort($array); 
for ($i=0; $i <= count($array)-1; $i++) 

     $arr[]=$array[$i]; 
     print_r($arr); 

?> 
関連する問題