2011-07-13 84 views
1

某種新的陣列我有類似這樣創建和時間

Array 
(
    [0] => Array 
     (
      [showname] => White Collar 
      [air_time] => 1310590800 
     ) 

    [1] => Array 
     (
      [showname] => Chopped 
      [air_time] => 1310590800 
     ) 

    [2] => Array 
     (
      [showname] => Covert Affairs 
      [air_time] => 1310587200 
     ) 
    } ... etc 

我想克里特由air_time排序的新數組的數組。例如含有相同air_time所有節目應當在[0]然後[1]→[2]等。

輸出我想的一個例子是這樣的:

Array 
(
    [0] => Array 
     (
      [time] => 1310590800 
      [shows] => Array 
       (
        [name] => White Collar 
        [name] => Chopped 
       ) 

     ) 

    [1] => Array 
     (
      [time] => 1310587200 
      [shows] => Array 
       (
        [name] => Covert Affairs 
       ) 

     ) 
} 

我已經一直在尋找像multisort這樣的不同數組方法,但我無法弄清楚。

您能否指點我正確的方向?感謝

更新我知道如何在陣列通常按照時間排序,我只是不知道,具有相同的時間

+0

[\ [PHP \]對多維數組進行排序](http://stackoverflow.com/questions/648405/php-sort-a-multi-dimensional-array) –

回答

0

這並不難,如果你圍繞它的頭。順便說一下,您不能擁有多個具有相同鍵名的數組元素。

$shows = array(
    array(
     'showname' => 'White Collar', 
     'air_time' => 1310590800 
    ), 
    array(
     'showname' => 'Covert Affairs', 
     'air_time' => 1310587200 
    ), 
    array(
     'showname' => 'Chopped', 
     'air_time' => 1310590800 
    ) 
); 

/* Sort by air_time (descending) */ 
usort($shows, function ($a, $b) { 
    return ($b['air_time'] - $a['air_time']); 
}); 


/* Regroup array (utilizing the fact that the array is ordered) */ 
$regrouped = array(); 
$c = 0; 
foreach ($shows as $show) { 
    if ($c > 0 && $regrouped[$c - 1]['time'] === $show['air_time']) { 
     $regrouped[$c - 1]['shows'][] = $show['showname']; 
    } else { 
     $regrouped[] = array('time' => $show['air_time'], 
          'shows' => array($show['showname'])); 
     $c++; 
    } 
} 

print_r($regrouped); 
1

嘗試使用我怎樣才能分離和族元素。提供的鏈接有幾個工作示例。