首页 > 解决方案 > array_push 推送到我的会话数组 PHP 中的许多项目

问题描述

我正在创建一个小网店来取乐。每次用户单击 cetrain 按钮时,addToChart()都会调用该函数。在这个函数中,我将所有需要的数据推送到一个数组中。之后,我使用 AJAX POST 方法将此数组发送到 php 脚本 (addToCart.php),如下面的 javascript 代码所示:

function addToChart(deze) {
    const brandContainer = deze.parentNode;
    const productName = brandContainer.children[0].innerHTML;

    addToCartProductArr.push(productName);

    $.ajax({
        url: "./*/addToCart.php",
        method: "POST",
        data: {arr:addToCartProductArr},
    });
}

addToCart.php我获取传递的数组并将其存储到$arr变量中。之后我循环这个数组并将所有数据(使用array_push()方法)推送到一个会话数组中,因为我需要在其他 php 脚本中使用这个会话数组。

<?php
include_once('./conn.php');
session_start();

$arr = $_POST['arr'];

if(!isset($_SESSION['name_arr'])) {
    $_SESSION['name_arr'] = array();
}

for($i=0; $i<sizeof($arr); $i++) {
    array_push($_SESSION['name_arr'], $arr[$i]);
}

?>

问题:当用户单击按钮时,数据会多次存储到会话数组中。例如:击中一个项目 3 次会在我的 session_array 中给我 5 个项目,例如:

当我 print_r 会话数组时:会话数组的 print_r

HTML 代码:

<p onclick="addToChart(this)" class="addToChart"><i class="fa fa-plus-circle"></i></p>

标签: javascriptphp

解决方案


你原来的 php 是正确的,只需在 javascript 中制作这样的脚本

function addToChart(deze) {
var addToCartProductArr=[];
const brandContainer = deze.parentNode;
const productName = brandContainer.children[0].innerHTML;

addToCartProductArr.push(productName);

$.ajax({
url: "addToCart.php",
method: "POST",
data: {arr:addToCartProductArr},

});
}

我们只是在每次调用函数时初始化数组:

 var addToCartProductArr=[];

推荐阅读