2013-07-06 51 views
-2

我的主要目標是檢查ID ==從1到50還是不是,所以我需要根據ID回顯日期時間,例如,如果ID === 5回聲$ DTIME [ '5']等, 我做了一個數組來增加天,每個ID用幾行代碼增加日期時間

$dtime = array(
    1 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 0 days')), 
    2 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 1 days')), 
    3 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 2 days')), 
    4 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 3 days')), 
    48 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 47 days')), 
    49 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 48 days')), 
    50 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 49 days')), 
    ); 

,這裏是我的,如果/ elseif的語句

if ($next_id === 1): 
echo $dtime['1']; 
elseif ($next_id === 2): 
echo $dtime['2']; 
elseif ($next_id === 3): 
echo $dtime['3']; 
echo $dtime['48']; 
elseif ($next_id === 49): 
echo $dtime['49']; 
elseif ($next_id === 50): 
echo $dtime['50']; 
endif; 

一切工作這樣做很好,但我相信沒有所有這些路線都有一個簡短的方法來實現我的目標,任何想法? 在此先感謝。

回答

0

建立自己的陣列 -

$dtime=array(); 
for($i=0;$i<49;$i++){ 
    $dtime[$i+1] = date('Y/m/d H:i:s', strtotime($rdate['r_date']. "+ $i days")); 
} 

讓你的價值

$next_id=##; 
if (array_key_exists($next_id, $dtime)) { 
    echo $dtime[$next_id]; 
} 
2

你可以做

echo date('Y/m/d H:i:s', strtotime($rdate['r_date']. sprintf('+ %d days', $next_id - 1))); 

約束的$next_id有效值就留給讀者自己練習。

+0

感謝,併爲我的長碼對不起,我只是想給所有的信息,我有:) –

+0

唐不擔心顯示你的代碼,這只是我自己的個人問題。 –

0

您可以添加鍵陣列,而不if else如果您NEXT_ID和條件是相同

echo $dtime[$next_id]; 

也可以用我的輸出測試,

讓我知道如果我能幫助你。

0
$dtime = date('Y/m/d H:i:s', strtotime($rdate['r_date']) + ($next_id-1)*(60*60*24)); 

第一步是將日期$ rdate ['r_date']變成Unix時間戳。然後添加(60 * 60 * 24),這是一天中的秒數。最後,使用date()函數將其全部轉換回日期時間格式。

1
if(in_array($next_id, range(1, 50))) { //if value of next_id is valid (based on condition u applied) 
    echo date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+'. ($next_id - 1).' days')), 
}