2017-04-14 20 views
3

私はすべてのオブジェクトをプリントアウトするためにforeachループを使用する設定変数を持っています。日付に基づいて印刷するものを並べ替える方法はありますか? ここにオブジェクトを印刷するためのコードを示します。laravelの日付に基づいて設定変数をソート

'pressMetadata'=>[ 
     "AARP" => [ 
      "id" => 1, 
      "company" => "AARP", 
      "title" => "Updating Your Résumé for the Digital Age", 
      "url" => "http://www.aarp.org/work/job-hunting/info-2016/give-resume-a-digital-reboot.html", 
      "date" => "Sep 9, 2016" 
     ], 
     "Business Insider" => [ 
      "id" => 2, 
      "company" => "Business Insider", 
      "title" => "8 things you should always include on your résumé", 
      "url" => "http://www.businessinsider.com/what-to-always-include-on-your-resume-2016-1", 
      "date" => "Jan 28, 2016" 
     ], 
     "Morning Journal" => [ 
      "id" => 3, 
      "company" => "Morning Journal", 
      "title" => "5 things you missed: Google updates search, Jobscan and more", 
      "url" => "http://www.morningjournal.com/article/MJ/20140124/NEWS/140129366", 
      "date" => "Jan 24, 2014" 
     ], 
], 
+0

[PHPで日付を含む要素で多次元配列をソートする](http://stackoverflow.com/questions/2910611/php-sort-a-multidimensional-array-by-element-containing-date) – mickmackusa

+0

あなたが質問を投稿する前に既存の回答を検索しないときは、リソースとしての価値を下げてください。どのように多くの答えがあなたを助けてくれたかを見てください: – mickmackusa

+0

downvoted研究と自己解決の努力を示していないので、http://stackoverflow.com/search?q=how+to+sort+multidimensional+array+by+date – mickmackusa

答えて

1

ニーズを反映するように変更されます。 collect()への呼び出しでconfig()への呼び出しをラップし、コレクションのsortBy()メソッドを使用して、 'date'キーの値をstrtotime()でソートします。他の方法でソートする場合はsortByDesc()メソッドを使用してください。

@foreach (collect(config('constants.pressMetadata'))->sortBy(function ($press) { return strtotime($press['date']); }) as $press) 

Documentation here

+0

ありがとう、私はこれを行うlarvelの方法があることを知っていた、私はちょうどバニラPHPに私を指摘しなかったドキュメントを見つけることができませんでした – Aaron

0

あなたがPHPのusort機能を使用することができます。私はconstants.pressMetadataです。ここ$press['date']

@foreach (config('constants.pressMetadata') as $press) 
    <div> 
     <p id="quote">{{ $press['title'] }}</p> 
     <div class="more label"><a id="link" href="{{$press['url']}}">-{{$press['company']}}: {{$press['date']}}</a></div> 
     <hr> 
    </div> 
@endforeach 

に基づいて、それをソートします。

次のコードは、あなたが、これはかなり簡単にするためにLaravelのコレクションを使用することができるはずPHPマニュアルから取られたと

function cmp($a, $b) 
{ 
    if (strtotime($a['date']) == strtotime($b['date'])) { 
     return 0; 
    } 
    return (strtotime($a['date']) < strtotime($b['date'])) ? -1 : 1; 
} 

usort(config('constants.pressMetadata'), "cmp"); 
+0

手動コードのみをコピー・ペーストする場合は、リンクをコメントとして残してください。それ以外の場合は、この正確な質問に合わせて回答を編集してください。これは多次元配列です。 – mickmackusa

+0

携帯でコードを編集しようとしましたか? –

+0

このコードは、期待される結果を提供しません。あなたは投稿する前にテストしなかった。あなたが答えを出すつもりなら、仕事をしてください。それ以外の場合は、回答を削除して次に進みます。 – mickmackusa

関連する問題