2012-04-26 4 views
1

キーによって多次元配列をソート例として画面名によってこの多次元アレイでソートしようとアルファベット

function sort_by_array_key($array,$sort_key,$dir = 'ASC') { 
    usort($array, function($a,$b) use ($sort_key){ 
     return strnatcasecmp($a["$sort_key"], $b["$sort_key"]); 
    }); 
    if ($dir == 'DESC') { return array_reverse($array); } 
    else { return $array; } 
} 

、スクリーン名は現在並べ替え機能を実行した後でもこの順序で実行します。

newUser 
Chris 
Carlos 
Jason 

私は間違った時間に並べ替えを適用していますが、他の同様の例を見た後、私はこの問題を抱えていました。

+1

チェックを参照してください** ** DavidGのアプローチここ:http://php.net/manual/en/function.ksort.phpコメント – hjpotter92

+0

'$のmember_info'内の配列ではありませんあなたの質問は、 'sort_by_array_key'関数に渡します。おそらくそれはあなたの問題ですか? – hakre

答えて

0

まず、実際のリスト$ member_listを並べ替えることをお勧めします。また、オブジェクトを初期化する配列をソートしようとしています。配列を初期化するか、オブジェクトをソートする。

私はあなたが被写体に暗示するようにあなたが本当に、配列でプレーしたいと仮定した場合、これはあなたがやろうとしている何かであるかもしれない:

<?php 

$member_info = Array(); 
$member_info['id']   = '1'; 
$member_info['screen_name'] = 'Chris'; 
$member_info['first_name'] = ''; 
$member_info['last_name'] = ''; 
$member_info['email']  = ''; 

$member_list[] = $member_info; 

$member_info = Array(); 
$member_info['id']   = '2'; 
$member_info['screen_name'] = 'Carlos'; 
$member_info['first_name'] = ''; 
$member_info['last_name'] = ''; 
$member_info['email']  = ''; 

$member_list[] = $member_info; 

$member_info = Array(); 
$member_info['id']   = '3'; 
$member_info['screen_name'] = 'Jason'; 
$member_info['first_name'] = ''; 
$member_info['last_name'] = ''; 
$member_info['email']  = ''; 

$member_list[] = $member_info; 


//Sort member_list by screen name 
$member_list = sort_by_array_key($member_list,'screen_name','ASC'); 

function sort_by_array_key($array,$sort_key,$dir = 'ASC') { 
    usort($array, function($a,$b) use ($sort_key){ 
     return strnatcasecmp($a["$sort_key"], $b["$sort_key"]); 
    }); 
    if ($dir == 'DESC') { return array_reverse($array); } 
    else { return $array; } 
} 

print_r($member_list); 

/* 
Array 
(
    [0] => Array 
     (
      [id] => 2 
      [screen_name] => Carlos 
      [first_name] => 
      [last_name] => 
      [email] => 
     ) 

    [1] => Array 
     (
      [id] => 1 
      [screen_name] => Chris 
      [first_name] => 
      [last_name] => 
      [email] => 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [screen_name] => Jason 
      [first_name] => 
      [last_name] => 
      [email] => 
     ) 

) 
*/ 
0

ksort - 「を維持、キーで配列をソートこれは主に連想配列に役立ちます。

the manual

関連する問題