2016-09-27 1 views
1
How order an array so structured for [name] and to parity of [name] for [age] ? 

    [0] => Array 
     (
      [name] => Mary 
      [age] => 32 
     ) 

    [1] => Array 
     (
      [name] => Mary 
      [age] => 31 
     ) 

    [2] => Array 
     (
      [name] => Anna 
      [age] => 30 
     ) 

Output: 

Name | Age 
---------- 
Anna | 30 
Mary | 31 
Mary | 32 

これはコードである:複数キーの多次元配列の順序はどのようになっていますか?

function sort(&$array) { 
    function build_sorter($key) { 
    return function ($a, $b) use ($key) { 
     return strnatcmp($a[$key], $b[$key]); 
    }; 
    } 
    usort($array, build_sorter(["name"]));    
    usort($array, build_sorter(["age"]));   
} 
+0

より具体的にし、あなたの期待される出力を表示してくださいを。また、これまでに試したコードを見せてください。 –

+0

コードを貼り付けることはできますか? –

+0

あなたは名前と年齢の両方で配列をソートしたいですか? –

答えて

1

あなたは

<?php 
function Func_Sort($arr, $index) { 
    $b = array(); 
    $c = array(); 
    foreach ($arr as $key => $value) { 
     $b[$key] = $value[$index]; 
    } 

    asort($b); 

    foreach ($b as $key => $value) { 
     $c[] = $arr[$key]; 
    } 

    return $c; 
} 
$activities = array (
    '1' => array(
     'name' => 'Mary', 
     'age' => 32, 

    ), 
    '2' => array(
     'name' => 'Mary', 
     'age' => 31, 
     ), 
    '3' => array(
     'name' => 'anna', 
     'age' => 30 
    ), 
); 
$sorted_act = Func_Sort($activities, 'age'); 
echo "<pre>"; 
print_r($sorted_act); 

?> 

デモリンクこの機能を使用することができます。http://codepad.org/VNXbCjsT

0

使用する必要がありますhttp://php.net/manual/en/function.usort.php

ソート

例#4

ユーザ定義の比較関数を使用して値によって配列
<?php 
    $array[0] = array('key_a' => 'z', 'key_b' => 'c'); 
    $array[1] = array('key_a' => 'x', 'key_b' => 'b'); 
    $array[2] = array('key_a' => 'y', 'key_b' => 'a'); 

    function build_sorter($key) { 
    return function ($a, $b) use ($key) { 
     return strnatcmp($a[$key], $b[$key]); 
    }; 
    } 

    usort($array, build_sorter('key_b')); 

    foreach ($array as $item) { 
    echo $item['key_a'] . ', ' . $item['key_b'] . "\n"; 
    } 

?> 
+0

"不正なオフセットタイプ"を返します: "return strnatcmp($ a [$ key]、$ b [$ key]);"配列の構造は上記のpostと同じです。 –

関連する問題