2017-06-16 63 views
0

我有這樣的代碼:如何顯示誰擁有同一時間在一個列表國家

public function parse_timezones_list($timezones = '') { 
    global $lang, $core; 
    if(!is_array($timezones) || is_empty($timezones)) { 
     $timezones = array('UTC', 'Africa/Casablanca', 'Africa/Dakar', 'Africa/Abidjan', 'Europe/Paris', 'Africa/Lagos', 'Africa/Algiers', 'Africa/Tunis', 'Africa/Cairo', 'Asia/Beirut', 'Asia/Amman', 'Africa/Nairobi', 'Asia/Riyadh', 'Asia/Tehran', 'Asia/Dubai', 'Asia/Hong_Kong'); 
    } 
    $gmttime = gmmktime(gmdate('H'), gmdate('i'), gmdate('s'), gmdate('n'), gmdate('d'), gmdate('Y')); 
    $timezones_list.='<ul class="list-group">'; 
    foreach($timezones as $timezone) { 
     $timezone_obj = new DateTimeZone($timezone); 
     $time_obj = new DateTime('now', $timezone_obj); 
     $timezone_city = str_replace('_', ' ', explode('/', $timezone)); 
     if(empty($timezone_city[1])) { 
      $timezone_city[1] = $timezone_city[0]; 
     } 
     $timezones_list .= '<li class="list-group-item">'.$lang->sprint($lang->timecity, date('H:i', $gmttime + $timezone_obj->getOffset($time_obj)), ucwords($timezone_city[1])).'</li>'; 
    } 
    $timezones_list.='</ul>'; 
    return $timezones_list; 
} 

所以結果是這樣的:14:45 UTC time 14:45 Casablanca time 14:45 Dakar time 14:45 Abidjan time 16:45 Paris time 15:45 Lagos time 15:45 Algiers time 15:45 Tunis time 16:45 Cairo time

我想表明,誰擁有,同時每個國家在同一行,例如這裏,我想這樣的:14:45 Casablanca time,Dakar time,Abidjan time

感謝ü的幫助

+0

同時什麼時候?馬上?順便說一句,最好在標籤中列出你的語言 - 這將比「數組」,「功能」或「oop」更相關。 –

+0

是的現在,我的意思是顯示每個國家的時間,我不需要顯示每個國家誰一起在同一時間@JonSkeet –

+0

使用數組來分組...... ...? '$ timezones ['14:45'] [] = $ timezone'(當然動態替換「14:45」)。 – deceze

回答

1

不是100%我理解這個問題,但這種合作德將組的位置分成各自的時區:

$timezones = array('Africa/Casablanca', 'Africa/Dakar', 'Africa/Abidjan', 'Europe/Paris', 'Africa/Lagos', 'Africa/Algiers', 'Africa/Tunis', 'Africa/Cairo', 'Asia/Beirut', 'Asia/Amman', 'Africa/Nairobi', 'Asia/Riyadh', 'Asia/Tehran', 'Asia/Dubai', 'Asia/Hong_Kong'); 
$locations = array(); 
foreach ($timezones as $timezone) { 
    $dateTime = new DateTime(); 
    $dateTime->setTimeZone(new DateTimeZone($timezone)); 
    $locations[$dateTime->format('T')][] = $timezone; 
} 

它創建了一個數組出的是具有時區和值區域的關鍵$位置。輸出是這樣的:

Array 
(
    [WET] => Array 
     (
      [0] => Africa/Casablanca 
     ) 

    [GMT] => Array 
     (
      [0] => Africa/Dakar 
      [1] => Africa/Abidjan 
     ) 

    [CEST] => Array 
     (
      [0] => Europe/Paris 
     ) 

    [WAT] => Array 
     (
      [0] => Africa/Lagos 
     ) 
) 
相關問題