2017-06-18 16 views
1
[0] => Array (
    [term] => punk 
    [term_html] => <a href=""> punk </a> 
    ) 
[1] => Array (
    [term] => conflict 
    [term_html] => <a href=""> conflict </a> 
    ) 
[2] => Array (
    [term] => Crass 
    [term_html] => <a href=""> Crass </a> 
    ) 
[3] => Array (
    [term] => bct 2 
    [term_html] => <a href=""> 
    ) 

配列内の配列の用語に基づいてこの配列をアルファベット順でソートするにはどうすればよいですか?多次元配列をアルファベット順に並べ替える

私はこの試みた:記述、0

function sortByOrder($a, $b) { 
    return $search_terms_html[term]; 
} 

uasort($search_terms_html, 'sortByOrder'); 

をしかし、それは動作しません:(

+0

[多次元配列をアルファベット順にソートする](https://stackoverflow.com/questions/5526600/sort-multidimensional-array-alphabetically) –

+0

uksort(); ....... –

+0

uksort()でテスト済みです...同じ結果 – comdex

答えて

2

uasort()に渡された比較コールバック関数が値< 0を返すことが期待され、0、または>あなたの例では、コールバックは単純に、変更されていない値$search_terms_html[term]を返しています;配列要素を表す引数を使用していない(コールバック関数のパラメータとして渡されている、sortByOrder())要素は文字列です。呼び出しを定義してみてください

function sortByOrder($a, $b) { 
    return strcmp($a['term'],$b['term']); 
} 

コールバックの期待と一致するスティング比較の値を返します。

1

私はそれの一つの要素によって全体多次元配列をソートするために見つける最も簡単な方法:

<?php 
$multiArray = Array( 
    Array("id" => 1, "name" => "Defg"), 
    Array("id" => 2, "name" => "Abcd"), 
    Array("id" => 3, "name" => "Bcde"), 
    Array("id" => 4, "name" => "Cdef")); 
$tmp = Array(); 
foreach($multiArray as &$ma) 
    $tmp[] = &$ma["name"]; 
array_multisort($tmp, $multiArray); 
foreach($multiArray as &$ma) 
    echo $ma["name"]."<br/>"; 


?> 

出力

  • ABCD
  • BCDE
  • CDEF
  • DEFG
関連する問題