PHP:具有3个参数的函数>使用较少的参数

时间:2016-08-29 22:00:36

标签: php

我刚刚创建了一个函数来添加年|月|日。但是我有一个小问题,有时候我想添加几年,但由于该函数有3个参数(年,月,日),我收到警告:

  

警告:缺少addDate()的参数2,在第10行的C:\ xampp \ htdocs \ date.php中调用,在第2行的C:\ xampp \ htdocs \ date.php中定义

     

警告:缺少addDate()的参数3,在第10行的C:\ xampp \ htdocs \ date.php中调用,在第2行的C:\ xampp \ htdocs \ date.php中定义

<?php 
function addDate($years, $months, $days)
{
    $currentDate = date('Y-m-d');

    $newDate = date('Y-m-d', strtotime($currentDate. '+'. $years. ' years +'. $months. ' months +'. $days. ' days'));
    echo $newDate;
}

addDate(2);
?>

我试过使用addDate(2,null,null);但它不起作用。

2 个答案:

答案 0 :(得分:3)

您可以为参数定义默认值,例如

function addDate($years = 0, $months = 0, $days = 0)
{

在构建字符串之前,最好检查每个是>0

$newDateString = '';
if ( $years > 0 ) $newDateString .= " +$years years";
if ( $months > 0 ) $newDateString .= " +$months months";
if ( $days > 0 ) $newDateString .= " +$days days";
$newDate = date('Y-m-d', strtotime( date('Y-m-d') . $newDateString ) );

最后,您(可能)希望使用return而不是echo()来传递值 - 稍后允许更多功能:

    return $newDate;

并且这样称呼它:

echo addDate( 2 );

功能:

function addDate($years = 0, $months = 0, $days = 0)
{
    $newDateString = '';
    if ( $years > 0 ) $newDateString .= " +$years years";
    if ( $months > 0 ) $newDateString .= " +$months months";
    if ( $days > 0 ) $newDateString .= " +$days days";
    return date('Y-m-d', strtotime($currentDate . $newDateString ) );
}

答案 1 :(得分:3)

您可以为参数声明默认值:

function addDate($years, $months = 0, $days = 0)

这样您就不需要指定那些或调用您的函数,如'addDate(2,0,0)'

请参阅http://php.net/manual/functions.arguments.php