2017-10-25 3 views
0

私は$ itemIdsという名前の配列を持っていて、次のデータで構成されています。キーはアイテムIDで、値は読み込み可能な日付に変換できる日時です。値(時間)に応じて配列の順序を並べ替えるだけです。私は完全にPHPに新しいですし、いくつかの例やヒントは素晴らしいだろう!私はあなたから聞くのが大好きです。PHPの日付時刻の値に基づいて配列を変換できません

Array 
(
    [10477] => 1508898726 
    [10549] => 1508898744 
    [10891] => 1508898752 
) 

このコードを使用すると、print_rから次のデータが得られます。

if (isset($itemIds)) { 
    $time = array(); 
    foreach ($itemIds as $key => $val) { 
     print_r($key.'=>'.date('m/d/Y H:i:s', $val)); 
    } 
} 

問題がhere.Iから始まり、日付時刻に応じて(& DESC ASC)$ itemsIdsをソートしたいです。私はデータをソートしたい

10477 => 10/25/2017 11:32:06 
10549 => 10/25/2017 11:32:24 
10891 => 10/25/2017 11:32:32 

は、次のデータ

Array 
(
    [0] => 10477 
    [1] => 10549 
    [2] => 10891 
) 

答えて

1

のようにそれを変更するarray_keys($ shopIds)を使用し、私はより簡単なアプローチは、データをソートして、それを反転することだと思いますキーは値です。あなたのデータを見ると、私は最初に実際のタイムスタンプを見ることができます。それらを使用し、文字列に変更しないでください。なぜなら、何の理由もなく余分な仕事をしたり、必要のない複雑さの層を導入したりするだけなので、私はこれを言う。代わりに、私は次のようにします:

$array = [ 
    10477 => 1508898726, 
    10549 => 1508898744, 
    10891 => 1508898752, 
]; 
arsort($array); 
$sorted_array = array_values(array_flip($array)); 

これは読みやすく、余分な機能を伴いません。あなたが残っている結果は次のとおりです。

少し説明
Array 
(
    [0] => 10477 
    [1] => 10549 
    [2] => 10891 
) 

:私はarsort()またはasort()を使用してい

が配列の値に基づいて並べ替えるために、(ソートしたい方向に基づいて) 。

次に、キーと値を入れ替えるために、アレイ上でarray_flip()を使用します。

最後に、array_keys()を使用して、配列内のインデックスをリセットし、並べ替えを維持します。

希望すると便利です。

+0

これは最も役立つソリューションです。 – Tony

関連する問題