Прежде всего, не ставьте вслепую session_start () в верхней части каждой страницы.Он начнет сеанс снова, даже если предыдущий сеанс был запущен, и обновит все ваши значения, поэтому сначала измените его на:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
, таким образом, он начинает сеанс, только если он не существует.
Теперь вы получаете ошибку, потому что ваш $_SESSION['coupon']['couponcode']
является строкой, поэтому добавьте дополнительную проверку:
if(!isset($_SESSION['coupon']['couponcode'][$coupon])){
// Add couponcode to session if it does not already exist
if (empty($_SESSION['coupon']['couponcode']) || !is_array($_SESSION['coupon']['couponcode']))) {
$_SESSION['coupon']['couponcode'] = [];
}
$_SESSION['coupon']['couponcode'][] = $coupon;
}