2017-10-14 48 views
1

我知道這段代碼按照最近的開始時間對活動數組進行排序,並且只顯示循環中具有相同日期的第一個活動。在PHP中使用類似的結果排序在我使用PHP

foreach ($activity_array AS $k => $v): 
...... 

usort($v['activity'], function ($a, $b) { 
$ad = new DateTime($a['start']); 
$bd = new DateTime($b['start']); 
if ($ad == $bd) { 
return 0; 
} 
return $ad < $bd ? -1 : 1; 
}); 

我怎麼能如果開始時間是一樣的,但必須是那種在同一活動在需要另外一個場地變量排序。

| Activity | Start   | Venue | 
+------------+----------------+-----------+ 
| Activity A | 22/10/17 08.30 | Floor 1 | 
| Activity D | 22/10/17 10.30 | Hall 3 | 
| Activity B | 22/10/17 10.30 | Hall 1 | 
| Activity C | 22/10/17 10.30 | Hall 2 | 
| Activity X | 22/10/17 09.30 | Floor 2 | 

是這樣的:

| Activity | Start   | Venue | 
+------------+----------------+-----------+ 
| Activity A | 22/10/17 08.30 | Floor 1 | 
| Activity X | 22/10/17 09.30 | Floor 2 | 
| Activity B | 22/10/17 10.30 | Hall 1 | 
| Activity C | 22/10/17 10.30 | Hall 2 | 
| Activity D | 22/10/17 10.30 | Hall 3 | 
+0

問題好+ 1 –

回答

1

您可以場地再次檢查時,開始時間是相同的

foreach ($activity_array AS $k => $v): 
...... 

usort($v['activity'], function ($a, $b) { 
$ad = new DateTime($a['start']); 
$bd = new DateTime($b['start']); 
if ($ad == $bd) { 

    $venue1 = $a['venue']; 
    $venue2 = $b['venue']; 
    return strcmp($venue1, $venue2); 
} 
return $ad < $bd ? -1 : 1; 
}); 
+0

'($ venue1 - venue2 $)。 ==樓1樓2',我不認爲會給出friutful結果 –

+0

是我編輯了我的答案@AlivetoDie –

+0

謝謝@ B.Desai,不知道該函數存在。 – abu

1

這裏是您的解決方案....

$array = array(
     array('activity' => 'Activity A', 'start' => '22/10/17 08.30', 'venue' => 'Floor 1'), 
     array('activity' => 'Activity D', 'start' => '22/10/17 10.30', 'venue' => 'Hall 3'), 
     array('activity' => 'Activity B', 'start' => '22/10/17 10.30', 'venue' => 'Hall 1'), 
     array('activity' => 'Activity C', 'start' => '22/10/17 10.30', 'venue' => 'Hall 2'), 
     array('activity' => 'Activity X', 'start' => '22/10/17 09.30', 'venue' => 'Floor 2') 
); //Your Array 
usort($array,"cmp"); 
function cmp($a, $b){ 
    if ($a["venue"] == $b["venue"]) { 
     return 0; 
    } 
    return ($a["venue"] < $b["venue"]) ? -1 : 1; 
} 

結果

Array 
(
[0] => Array 
    (
     [activity] => Activity A 
     [start] => 22/10/17 08.30 
     [venue] => Floor 1 
    ) 

[1] => Array 
    (
     [activity] => Activity X 
     [start] => 22/10/17 09.30 
     [venue] => Floor 2 
    ) 

[2] => Array 
    (
     [activity] => Activity B 
     [start] => 22/10/17 10.30 
     [venue] => Hall 1 
    ) 

[3] => Array 
    (
     [activity] => Activity C 
     [start] => 22/10/17 10.30 
     [venue] => Hall 2 
    ) 

[4] => Array 
    (
     [activity] => Activity D 
     [start] => 22/10/17 10.30 
     [venue] => Hall 3 
    ) 

) 

Duplicate