まず状況を把握してください。
1.初めてアクセス ($_SESSION['syou']は空);
2.片方を選んでa.phpにアクセス ($_SESSION['syou'] = 'シャツ1')
※意図とは違う気がしますが、この時点でセッションに格納されてます。
3.カートに入れるを押して、内容を表示($_SESSION['syou'] = 'シャツ1')
4.ブラウザの戻るボタンででも最初の画面にアクセス($_SESSION['syou'] = 'シャツ1')
5.別の方を選んでa.phpにアクセス ($_SESSION['syou'] = 'ぼろしゃつ')
※2と同様に意図は違うと思います。また、この時点で2で保存したものを書きつぶしています。
この状況をまず理解してください。
では、何故こうなるか?
$_SESSION['syou']=$syou;
と書いているからです。
恐らく期待するのは、5の時点で($_SESSION['syou'] = 'シャツ1', 'ぼろしゃつ')となっていると期待していると思います。それであれば、
if (isset($_SESSION['syou']) && is_array($_SESSION['syou'])) { $_SESSION['syou'][] = $syou; } else { $_SESSION['syou'] = array($syou); }
また、カートの中の表示は、
print_r ($_SESSION['syou']);
とでも書けばいいでしょう。
もっと言いたいことはたくさんありますが、まずはここまで理解してください。