2013-05-01 22 views
-1

我的任務是分裂日期從數據庫中提取日期,並找到8年後的日期。爲什麼錯誤信息在PHP分裂()

我試圖在這裏 -

變量:

$doo = $info['s_doo']; // 2013-05-01 
$validity = $info['s_validity']; // 8 

嘗試1

$str="+".$validity." year"; 
echo date("d/m/Y",strtotime($str,$doo)); // Does not work 

嘗試2

$str="+".($validity*12)." month"; 
echo date("d/m/Y",strtotime($str,$doo)); // Does not work 

嘗試3

$str="+".($validity*52)." week"; 
echo date("d/m/Y",strtotime($str,$doo)); // Works but Wrong result 

最後

list($y, $m, $d) = split('-',$doo); // Line 107 

$str = ($y+$validity)."-".$m."-".$d; 
echo date("d/m/Y",strtotime($str)); // 01/05/2021 

輸出手段:

推薦使用:功能分裂()在d被棄用:\ PD_Website \ XAMPP \ htdocs中\ OPNET \ ShebaMCSL \ saving \ accinfo.php on line 01/05/2021

如果它正在生成一個正確的輸出爲什麼顯示錯誤消息?我不知道已棄用消息。 split('-',$doo,10);split('-',$info['s_doo'],10);split('[-]',$doo);等等

我需要一個好辦法,做任務 - 我還使用數組,而不是名單和分割功能類似嘗試。謝謝。

+0

的可能重複[?爲什麼'ereg'在PHP(已廢棄)(http://stackoverflow.com/questions/3078993/why-is-ereg-deprecated-in -php)或[棄用:函數split()已棄用。如何重寫這個語句?](http://stackoverflow.com/questions/3453915/deprecated-function-split-is-deprecated-how-to-rewrite-this-statement) – hakre 2013-05-01 16:07:32

+0

而不要忘記:[Function ereg( )已棄用](http://stackoverflow.com/q/4297501/367456) – hakre 2013-05-01 16:38:33

回答

1

如上所述HEREsplit()已被棄用。

使用explode(),而不是像這樣:

list($y, $m, $d) = explode('-' , $doo); 
+0

感謝您的有用鏈接。它的工作原理... – 2013-05-01 16:14:52

+0

@MukkhoShukkhoManush,很高興我能幫忙;) – Mathlight 2013-05-01 16:15:29

1

split()函數已棄用。你應該使用explode('-',$doo)這將把字符串分成一個數組。

+0

謝謝。它運作良好。 – 2013-05-01 16:13:37

2

已過時意味着PHP語言將停止在以後的功能支持。它將從未來版本的語言中刪除,因此如果您現在有一個工作代碼,並且將來升級您的PHP,那麼代碼將會中斷,因爲它在此新版本中不可用。每個棄用的函數都被一個新的更好的函數取代。找到一個並用新的替換你的功能。

爲了通知用戶,即使所討論的函數當前在當前PHP版本中工作,PHP也會顯示已棄用的消息。

+0

@指導:如果你想幫忙,請在網站上留下有用的鏈接到這裏(最有可能)重複的信息,並留在PHP手冊中使這個網站更好的地方。謝謝! - 網址:網頁基於一個叫做超文本的原則:你不需要再寫一些東西,你可以鏈接。非常有效的,如果你知道如何使用它! – hakre 2013-05-01 16:08:30

+3

@hakre *如果*我想要?你的評論有一個非常糟糕的光顧感。如果你想讓這個網站成爲一個更好的地方,我的朋友...... – raidenace 2013-05-01 16:09:27

+0

請在網上輕輕一字,並介意語言的差距。我們並不是所有人都用英語作爲第一語言,你似乎把我的寫作看成好像寫了壞的意圖(不,我不是光顧你(?)[我的拼寫檢查員甚至不知道這個詞]) 。放心吧,事實並非如此。 – hakre 2013-05-01 16:13:14

3

使用DateTime代替:

// input date (Y-m-d ?) 
$doo = '2013-05-01'; 

// 8 years ? 
$validity = new \DateInterval('P8Y'); 

// convert input date to DateTime object and add validity 
$doo = \DateTime::createFromFormat('Y-m-d', $doo); 
$doo->add($validity); 
print $doo->format('d/m/Y');