質問内容がよく分からんけど、$_SESSION["cart"] = [$_POST["item"]];
の書き方の質問だとして、以下のように記述すると良いです。
php
1$_SESSION["cart"][0] = $_POST["item"];
2or
3$_SESSION["cart"] = [0 => $_POST["item"]];
下だと、$_SESSION["cart"]自体を上書きしてしまうので、ちゃんと意味を考えて使い分ける必要があります。
マニュアル読むと良いです。
配列
if の構造と、isset の使い方がおかしいので、サンプル上げときます。
php
1<?php
2$arr = [
3 NULL,
4 'hoge1',
5 'hoge21',
6 ];
7
8foreach ($arr as $val) {
9 $_POST["item"] = $val;
10 if(isset( $_POST["item"] )){
11 if(isset( $_SESSION["cart"] )) {
12 $_SESSION["cart"][] = $_POST["item"];
13 }else{
14 $_SESSION["cart"][0] = $_POST["item"];
15 }
16 }
17 if(isset($_SESSION["cart"])){
18 foreach($_SESSION["cart"] as $cart_val){
19 echo $cart_val . ' ';
20 }
21 }
22 echo PHP_EOL;
23}
個人的には、$_POST を使用するスクリプトは嫌いです。