2017-07-01 2 views
0

PHP 5.3を使用して、配列の降順ソートを試みています。 は私が爆発する文字列の後に以下の複数の単一のアレイを持っている:文字列を展開し、インデックスキーで定義された複数の単一配列を並べ替えます

Array 
(
[0] => A 
[1] => 115 
[2] => 20 
) 
Array 
(
[0] => A 
[1] => 120 
[2] => 40 
) 
Array 
(
[0] => A 
[1] => 140 
[2] => 50 
) 

コードI:

Array 
(
[0] => A 
[1] => 115 
[2] => 20 
) 
Array 
(
[0] => A 
[1] => 140 
[2] => 50 
) 
Array 
(
[0] => A 
[1] => 120 
[2] => 40 
) 

を私は探しています出力は、それは次のようになりますkey[1]によって昇順に並べ替えることであろうこれまでのところ:

$data = string_content_to_explode 

foreach($data as $line) { 

    if(substr($line,0,1)=="A") { 

    $parts = explode(chr(9), $line); 

// sort awards DESC 
array_multisort($parts[1]); 
} 

echo "<pre>"; print_r($parts); echo "</pre>"; 

残念ながら、これはまったく効果がありません。 このように複数の配列をソートできる関数やforeachの例が見つかりません。誰かが私を正しい方向に向けることができれば、それはすばらしいことになるでしょう。 usort

+0

このhttp://php.net/manual/en/function.array-multisort.phpは既に見ましたか? –

+0

[値による多次元配列の並べ替え]の可能な複製(https://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value) – mickmackusa

答えて

0

ソートそれを:

usort($string_content_to_explode,function($a,$b){ 
    if ($a[1] == $b[1]) 
     return 0; 
    return ($a[1] < $b[1])? -1: 1; 
}); 


var_dump($string_content_to_explode); 
+0

落札者のためのコメント)。はい、間違っていました。私は点検した/更新した。 P.S.良い週末を!)) – voodoo417

0

usort()は不要です。 sort()は、この問題を完全に解決します。なぜなら、最初の列と2番目の列を別々に並べ替えることができるからです。

コード:(Demo

$data=array('A'.chr(9).'115'.chr(9).'20','B'.chr(9).'DO NOT'.chr(9).'INCLUDE','A'.chr(9).'140'.chr(9).'50','A'.chr(9).'120'.chr(9).'40'); 

foreach($data as $line){ 
    if(strpos($line,'A')!==false){ // don't use substr($line,0,1)=="A", strpos is faster/better 
     $parts[]=explode(chr(9),$line); // create multi-dimensional array, instead of overwriting 1-dim array 
    } 
} 
sort($parts); // because first column is always "A", and you are sorting on the next column 
var_export($parts); // print to screen 

出力:

array (
    0 => 
    array (
    0 => 'A', 
    1 => '115', 
    2 => '20', 
), 
    1 => 
    array (
    0 => 'A', 
    1 => '120', 
    2 => '40', 
), 
    2 => 
    array (
    0 => 'A', 
    1 => '140', 
    2 => '50', 
), 
) 

P.S. OPは当初DESC命令を求めたが、期待される結果で判断するASC命令を意味した。

関連する問題