POSTした値をセッションに追加して配列にしています。
POSTした値と同じ[key]があったときは上書きしたいのですが、何度やってもうまく行きません。
どのようにしたら上書きするでしょうか。

session_start();

//セッション変数「item」が未設定の場合は空の配列に初期化
if (!isset($_SESSION['item'])) {
    $_SESSION['item'][] = array();
} else if (is_string($_SESSION['item'])) {
    //セッション変数「cart」に文字列が存在していれば配列セッションcartを代入
    $_SESSION['item'][] = array($_SESSION['item']);
}
sort($_SESSION['item']);

/********************追加処理**********************/

$key = isset($_SESSION['item'][ $_POST['key'] ]);

//セッション変数内にPOSTで送られてきたidと同じものが無かった場合の処理
    if ($key) {
        if (isset($_SESSION['item']['type'])) {
            $_SESSION['item']['type'] = $_POST['type'];

            if (isset($_SESSION['item']['days'])) {
                $_SESSION['item']['days'] = $_POST['days'];

            }
        }
    }else{
        if (isset($_POST['key'])) {
            if (isset($_POST['type'])) {
                if (isset($_POST['day'])) {
                    if (isset($_POST['price'])) {
                        if (isset($_POST['days'])) {
                            //送られてきたデータを配列に格納
                            $item = array('key'    => $_POST['key'],
                                          'type'   => $_POST['type'],
                                          'day' => $_POST['day'],
                                          'price'  => $_POST['price'],
                                          'days'     => $_POST['days']);
                        }
                    }
                }
            }
        } else {
            echo = 'no item';   //何もカートに入っていません
        }
    }
//セッション変数「item」に配列の中身を追加
if (isset($item)) {
    $_SESSION['item'][] = $item;
};

$item = $_SESSION['item'];
$item = array_filter($item);

セッションは配列にして受渡ししています。
$item = $_SESSION['item']

Array ( 
[1] => Array ( [key] => 1450669337 [type] => 4 [dayset] => 20151225 [price]=> 1,000 [days] => 1 )
[2] => Array ( [key] => 1450669517 [type] => 6 [dayset] => 20151231 [price] => 3,000 [days] => 3 ) )