2013-05-01 23 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');