2015-10-12 20 views
2

我有一個範圍從0-23的數字數組,每個數字表示從午夜到晚上11點的時間。它按鍵的值排序。在PHP中將數字(0-23)轉換爲時間(AM/PM)格式

22 => int 8 
3 => int 7 
5 => int 6 

等。如果,例如,該陣列的第一個元素的密鑰是22我想變量$第一是「10PM」。

當然,我可以寫:

if(key($array)=='22'){ 
    $first = '10PM'; 
} 

,但我不得不這樣做23次,每次關鍵...有沒有更簡單的方法?

+0

爲什麼使用數組? 「22」從哪裏來?你沒有使用日期或時間戳嗎?退房http://stackoverflow.com/questions/3404699/how-to-get-am-pm-from-a-datetime-in-php – Naruto

+0

試試這個--http://www.php-mysql-tutorial.com /wikis/php-tutorial/php-12-24-hour-time-converter-part-1.aspx – marmeladze

+0

感謝大家,「22」來自Facebook Insights數據陣列給我的一個自動化陣列,用於「粉絲在線」。他們列出了在線人數,以及在我的例子中的那些數字在什麼時間。 – Hook

回答

1

下面是代碼

$hrs = 15; 
echo date("h a", strtotime("00-00-00 $hrs:00:00")); 
+0

多麼簡單,並且節省了行數! – Hook

-2

你可以用下面的代碼實現這一點。

$array = array(
    22 => 8, 
    3 => 7, 
    5 => 6  
); 

foreach($array as $key => $val){  
    if(($key/12) <1){ 
     $time = $key."AM"; 
    } else if(($key/12) == 1){ 
     $time = "12"."PM"; 
    } else{ 
    $time = ($key%12)."PM"; 
    } 
    echo $time; 
} 
+0

@Chayan你沒有做出任何顯着的修改。 – sandeepsure

+0

@hook我可以知道拒絕答案的理由嗎? – sandeepsure

1
$array = array(
    22 => 8, 
    3 => 7, 
    5 => 6  
); 

$i = 1; 
foreach ($array $key=>$val) 
{ 
    ${'time_' . $i} = date("HA", strtotime($key . ":00:00")); 
    $i++; 
} 

//Now check echo $time_1; 
1

您也可以通過您的值的函數像波紋管:

<?php 

$array = array(22 => 8, 3 => 7, 5 => 6); 

foreach ($array as $key => $value) { 
    echo numbers_to_time($key) . "<br>"; 
} 

function numbers_to_time($number) { 

    $number = intval($number); 

    if ($number < 0 || $number > 23) { 
     return "Number should be between 1 to 23"; 
    } 


    if ($number == 0) { 
     return "12AM"; 
    } elseif ($number == 12) { 
     return $number . "PM"; 
    } elseif($number > 0 && $number < 12) { 
     return $number ."AM"; 
    } elseif ($number > 12 && $number <= 23) { 
     $temp = $number - 12; 
     return $temp . "PM"; 
    } 

} 

?>