2017-09-17 11 views
1

私はイベントカレンダーを作っています。すべてを時間順にソートする必要があります。私はもともとこの$yearsを移入するために使用され、より大きな配列を持っている数値キー付き多目的配列のPHPソート

$years = array(
    2018 => array(
     01 => array(), 
     02 => array() 
    ), 
    2017 => array(, 
     02 => array() 
     01 => array() 
    ) 
); 

この

は、私は現在のソートだ配列です。

ksortを使用して、yearsを正しくソートしました。つまり、時間順に並べ替えられています。しかし、私は第3レベルをソートできません(2017を参照してください、私の配列は02,01ですが、それは01,02です)。最後のレベルまたは配列(2017 > 02など)は正しくソートされていますが、これらはそれぞれのコンテンツ内でソートされるため、問題はありません。

私は単にsortarray_multisortksortusortとを試してみたが、どれも、彼らは数値でとして私は私のキーをソートすることができません。同様ksort()でそれらを並べ替え、子要素を反復処理について

答えて

3

方法:

<?php 
$years = array(
    2018 => array(
     01 => array(), 
     02 => array() 
    ), 
    2017 => array(
     02 => array(), 
     01 => array() 
    ) 
); 
ksort($years); 
foreach ($years as &$year) { 
    ksort($year); 
} 
var_dump($years); 

Demo

+0

ああ、大丈夫、私は、ここに '&' '私の$ year'がそれを解決する前の使用を私の問題を参照してください。受け入れられたように答えをマークするのは少し速すぎます。このシナリオで '&'文字が何をしているのか聞いてもよろしいですか? – davewoodhall

+1

これは要素を参照として使用しています。つまり、単に変更されたコピーを返すのではなく、実際の '$ year'配列を変更します。これについて[ここをクリック](http://php.net/manual/en/language.references.pass.php) – ishegg

+0

おかげで!わかった!本当に助けていただきありがとうございます! – davewoodhall

2

はこの1つが役に立つことを願っています。ここでは、キーに基づいて配列をソートするためにksortを使用しています。

Try this code snippet here

ksort($years); 
$result=array_map(
    function($array) { 
     ksort($array); 
     return $array; 
    }, 
    $years); 
+0

これは問題を解決するので、私はupvotedしました。しかし、私は[isheggの答え](https://stackoverflow.com/questions/46266206/php-sort-multimentional-array-with-numeric-keys/46266251#46266251)を使用しました。したがって、私はその答えを溶液。あなたのご意見ありがとうございます! – davewoodhall

+0

@davewoodhallありがとう、友人... :)あなたを助けてうれしい.. –

+1

これは受け入れられる回答でなければなりません – Akintunde007

関連する問題