如果项目已存在,请勿将其添加到会话数组中

时间:2016-05-16 12:16:55

标签: php session

嗨,我在这里有点新手 - 所以请耐心等待我。 我正在尝试创建一个愿望清单 - 类似于购物车,但没有支付网关。反正。

我有以下代码,当点击添加到心愿单按钮时,它会向数组添加项目

if (isset($_GET['add'])) {
  $ITEM = array(    
    'name' => $_GET['add']      
  );

  $_SESSION['WISH_LIST'][] =  $ITEM;
  header('Location: ' . $_SERVER['PHP_SELF']);
}

我想让它工作,以便在项目已经存在的情况下不添加该项目。

我试过这个

if (isset($_GET['add'])){
  $ITEM = array(    
    'name' => $_GET['add']      
  );

  if ( in_array($_GET['add'], $ITEM) ) {
    echo "Already Added";
  } else {
    $_SESSION['WISH_LIST'][] =  $ITEM;
    header('Location: ' . $_SERVER['PHP_SELF']);
  } 
}

但是这永远不会添加项目 - 我总是得到'已经添加'文本。

1 个答案:

答案 0 :(得分:3)

您需要检查会话中存在的内容,而不是$ ITEMS数组:

if (isset($_GET['add'])) {
    $ITEM = array(
        'name' => $_GET['add']
    );

    if (in_array($ITEM, $_SESSION['WISH_LIST'])) {
        echo "Already Added";
    } else {
        $_SESSION['WISH_LIST'][] = $ITEM;
        header('Location: ' . $_SERVER['PHP_SELF']);
    }
}

也可以更好地缩进代码。