逆の場合の処理は不要だけど、一応念のために入れています。
出力は2018/07/31のような形式で出力されます。
月末日のみの場合はdate("d" にするとか、出力結果から
explodeなんかで取得するなどしてください。
function getLastDayFromYM($set_year,$set_month){
$set_month=intval($set_month);
$set_year=intval($set_year);
$dam_m="";
$dam_y="";
//yとmが逆の場合のチェック
if($set_month>$set_year){
$dam_m=$set_year;
$dam_y=$set_month;
$set_year=$dam_y;
$set_month=$dam_m;
}
//
$tmp="";
if(($set_year == 0)||($set_year === "")){
$set_year=date("Y");
}
if(($set_month == 0)||($set_month === "")){
$set_month=date("n");
}
//直接 return date(〜); で良い。
//カスタマイズが必要であればY/m/dの部分を変更しましょう
//分岐などで形式を変えても良さそう
$tmp=date("Y/m/d", mktime(0, 0, 0, $set_month+1, 0, $set_year));
return $tmp;
}//end php func
echo getLastDayFromYM(2018,6)."<br>";
echo getLastDayFromYM(5,2018)."<br>";
echo getLastDayFromYM("2018","4")."<br>";
//出力結果
//2018/06/30
//2018/05/31
//2018/04/30