>>576
すこし話はずれるけど、そもそもの事象について説明しとく。

isset($date['day']) が真になる理由だけど、
$dateが配列ではなく文字列のため、添え字演算子は文字列インデックス(整数)を要求することになる。
んで、'day'を整数評価した値は0になるため、
isset($date['day'])はisset($date[0])となり、$date[0]は1文字目、つまり'2'が設定されているため、真になる。

なのでこうする。
isset($date) && is_array($date) && isset($date['day'])
array_key_existsとの違いにも気をつけること。

>>580
関係ないことずらずら書いててワロタ