我有一个从0-23的数字数组,每个数字表示从午夜到晚上11点的时间。按键值降序排列
22 => int 8
3 => int 7
5 => int 6
等。例如,如果数组的第一个元素的键值是22,我希望变量$first为"10PM"。
当然,我可以写:
if(key($array)=='22'){
$first = '10PM';
}
但是我必须为每个键做23次……有更简单的方法吗?
代码
$hrs = 15;
echo date("h a", strtotime("00-00-00 $hrs:00:00"));
$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;
您也可以将您的值传递给下面的函数:
<?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";
}
}
?>
您可以使用下面的代码实现这一点。
$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;
}