2017-01-20 4 views
-1

配列を要素の1つでソートしようとしています。 配列は次のようになります。PHPのarray_mutisort関数が機能していません

<?php 
    $activations = array(); 

    $activations[0] = array(); 
    $activations[0]['name'] = 'John Doe'; 
    $activations[0]['start'] = '2016-12-15T10:42:15'; 

    $activations[1] = array(); 
    $activations[1]['name'] = 'Jane Doe'; 
    $activations[1]['start'] = '2017-01-15T10:42:15'; 

    $activations[2] = array(); 
    $activations[2]['name'] = 'James Bond'; 
    $activations[2]['start'] = '2017-01-16T10:42:15'; 

    print '<pre>'; 
    print_r($activations); 
    print '</pre>'; 

    $newactivations = array_mutisort($activations, SORT_DESC, 'start'); 

    print '<pre>'; 
    print_r($newactivations); 
    print '</pre>'; 
    ?> 

私は間違っていますか? array_multisortで致命的なエラーが発生する 元のアクティブ化配列を開始列で並べ替えることができます。 これを行うことはできますか? 提供できるお手伝いをいただき、ありがとうございます。

+1

[array_multisort()](http://www.php.net/manual/en/function.array-multisort.php)は「参照渡し」であり、渡す配列をソートします;戻り値はブール値の成功/失敗フラグ –

+0

第2のポイント:致命的なエラー "定義されていない関数array_mutisortへの呼び出し"ですか? –

+0

どのような出力が必要ですか? –

答えて

0

代わりにusortを使用することをお勧めします。もちろん

$activations = [ 
    ['name' => 'John Doe', 'start' => '2016-12-15T10:42:15'], 
    ['name' => 'Jane Doe', 'start' => '2017-01-15T10:42:15'], 
    ['name' => 'James Bond', 'start' => '2017-01-16T10:42:15'] 
]; 

var_dump($activations); 

usort($activations, function($a, $b) { 
    return strcmp($b['start'], $a['start']); 
}); 

var_dump($activations); 

、この配列は、あなたがよりよい解決策になるためにそれらを得たクエリでORDER BY start DESCを使用して、データベースから来た場合。すでに指摘し、それはarray_multisort()だとして

array_multisort($activations, SORT_DESC, SORT_STRING); 

$newactivations = $activations; 
print '<pre>'; 
print_r($newactivations); 
print '</pre>'; 
0

最初の問題は、array_multisortの代わりにarray_mutisortを使用するタイプミスです。 2番目のパラメータはその関数に渡される3番目のパラメータで、型フラグ(docs参照)でなければなりません。あなたは結果の配列を確認したい場合は

はさらに、それはあなたが

print '<pre>'; 
print_r($activations); 
print '</pre>'; 

ではなく、ソートのboolean型の結果を印刷する必要があります$activationsです。

-1

これを試してみてください

array_multisort(array_column($activations, 'start'), $activations); 

SORT_ASCがデフォルトであります必要に応じてSORT_DESCを使用してください。

+0

私はあなたが上記のコードを最初にテストdownvoteする前に願っています –

0

、あなたはstart列を抽出し、ソートその上で、その後、$activationsをソートしておく必要があります。:

関連する問題