2016-08-29 9 views
1

年月日を追加する関数を作成しました。しかし、私は小さな問題がありますが、時には年を追加したい場合もありますが、関数には3つの引数(年、月、日)があるので、警告が表示されます:PHP:3つの引数を持つ関数>より少ない引数で使用する

警告:addDate 10行目でC:\ xampp \ htdocs \ date.phpで呼び出され、2行目でC:\ xampp \ htdocs \ date.phpに定義されています。

警告:Cで呼び出されたaddDate() \ XAMPP \ htdocsに\ date.phpライン10上及びCで定義された:行の\ XAMPP \ htdocsに\ date.php 2

<?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); 
?> 

I'v eはaddDate(2、null、null)を使用しようとしました。しかし、それは動作しません。おそらく(

$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)); 

最後に、あなたは以下となります。

+0

関数定義に[default values](http://php.net/manual/en/functions.arguments.php)を設定します: 'function addDate($ years、$ months = 0、$ days = 0) ' –

+0

' addDate(2、0、0);は関数を編集せずに動作するはずです。しかし、最も良い解決策は、他のものが示唆しているようにデフォルト値を使うことです。 – dan08

+0

例えば曜日を追加したい場合は、関係なく 'addDate(0、0、2)'が必要です。 – AbraCadaver

答えて

3

あなたは、パラメータのデフォルト値を宣言することができます。

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

あなたがする必要はありません。この方法それらを指定するか、 'addDate(2,0,0)'のような関数を呼び出してください。

http://php.net/manual/functions.arguments.php

+0

ありがとう!できます。 – Asez

3

あなたは

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

は、文字列を構築する前に、各>0あるかどうかを確認する方が良いかもしれませんが、パラメータなどのデフォルト値を定義することができます)はecho()ではなくreturnを使用して値を戻したいと考えています。これは後でもっと多彩なことを可能にします:

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)); 
} 
+0

ありがとう!できます。 – Asez

関連する問題