-1

私は次の形式の配列を持っています:

array
  0 => 
    array
      1335541286 => 
        array
          'event' => string 'track' (length=5)
          'title' => string 'Plastic Humans' (length=14)
          'album' => string 'Cities of hunger' (length=16)
          'artist' => string 'The Maple Room' (length=14)
  1 => 
    array
      1335540999 => 
        array
          'event' => string 'track' (length=5)
          'title' => string 'Atlantis' (length=8)
          'album' => string 'Cities of hunger' (length=16)
          'artist' => string 'The Maple Room' (length=14)
  2 => 
    array
      1335540064 => 
        array
          'event' => string 'track' (length=5)
          'title' => string 'Doradus Stars' (length=13)
          'album' => string 'A Glimpse of the Inside' (length=23)
          'artist' => string 'The Maple Room' (length=14)
  3 => 
    array
      1335539855 => 
        array
          'event' => string 'track' (length=5)
          'title' => string 'In Twenty Five' (length=14)
          'album' => string 'A Glimpse of the Inside' (length=23)
          'artist' => string 'The Maple Room' (length=14)
  4 => 
    array
      1334016000 => 
        array
          'event' => string 'purchase' (length=8)
          'title' => string 'Donald Trump - Single' (length=21)
          'artist' => string 'Mac Miller' (length=10)
          'format' => string '10"' (length=3)

タイムスタンプであるキーに基づいて配列を並べ替えたいと思います。PHPのソート方法についてたくさん読んだことがありますが、最善の解決策が何であるかわかりません。

どんな助けでもありがたいです、

4

2 に答える 2

1
uasort($array, 'cmp');

function cmp($a, $b)
{
    if (key($a) == key($b)) {
        return 0;
    }
    return (key($a) < key($b)) ? -1 : 1;
}
于 2012-04-28T17:08:15.840 に答える
1

縮小されたデータの使用:

$data = array(
  array('1335541286' => array('1')),
  array('1335540999' => array('1')),
  array('1335540064' => array('1')),
);

usort($data, function ($a, $b) {
  return key($a) - key($b);
});

print_r($data);

また、入力データの構造は少し奇妙に思えます。余分なレベルは実際には必要なく、不必要に物事を複雑にします。

于 2012-04-28T17:04:31.153 に答える