You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP购物车数据经AJAX传至另一PHP文件时循环遍历报错问题

问题:PHP购物车数据遍历存入数据库失败

我有一个PHP购物车,正尝试将购物车中的数据提交到另一个PHP文件并存入新数据库。已经把表格数据存入数组,用JSON.stringify处理后传给PHP文件并解码。直接调用$data[2]['prodName']能获取对应行的prodName值,但用for循环遍历$data[$x]['prodName']时出现警告:

PHP Warning: Undefined array key "prodName" in F:\DreamCPU backup\PHPConnect\checkout.php on line 8

可正常获取单个值的测试代码

<?php
  $data = stripcslashes($_POST['tabledata']);
  $data = json_decode($data, true);
  echo $data[2]['prodName'];
?>

出错的循环代码

<?php
$data = stripcslashes($_POST['tabledata']);
$data = json_decode($data, true);
for($x=0; $x < count($data); $x++)
{
   echo $data[$x]['prodName'];
}
?>

购物车表格

购物车表格

Array ( 
  [0] => Array ( [prodID] => 2 [prodName] => Little Mermaid Doll 2023 [prodDesc] => Little Mermaid Doll 2023 [prodQuantity] => 1 [prodPrice] => 15.00 [prodSub] => 15.00 ) 
  [1] => Array ( [prodID] => 3 [prodName] => Little Mermaid TShirt 1989 [prodDesc] => Little Mermaid TShirt 1989 [prodQuantity] => 1 [prodPrice] => 15.00 [prodSub] => 15.00 ) 
  [2] => Array ( [prodID] => 4 [prodName] => Little Mermaid TShirt 2023 [prodDesc] => Little Mermaid TShirt 2023 [prodQuantity] => 1 [prodPrice] => 15.00 [prodSub] => 15.00 ) 
  [3] => Array ( ) 
)

解决方案

从print_r结果能看到,数组索引[3]对应的是空数组,没有prodName键,循环到此处时触发警告。提供两种解决方式:

方法1:先过滤空数组再遍历

解码后先移除空数组,再用更适配数组遍历的foreach循环处理:

<?php
$data = stripcslashes($_POST['tabledata']);
$data = json_decode($data, true);
// 过滤空数组
$data = array_filter($data);
foreach($data as $item)
{
   // 确保键存在再执行操作
   if(isset($item['prodName'])){
       echo $item['prodName'];
       // 此处编写数据库存入逻辑,推荐用预处理语句防SQL注入
       // $stmt = $pdo->prepare("INSERT INTO 表名 (prodName, prodID, prodQuantity) VALUES (?, ?, ?)");
       // $stmt->execute([$item['prodName'], $item['prodID'], $item['prodQuantity']]);
   }
}
?>

方法2:循环内判断键是否存在

保留原数组结构,在循环中检查当前项是否包含目标键:

<?php
$data = stripcslashes($_POST['tabledata']);
$data = json_decode($data, true);
for($x=0; $x < count($data); $x++)
{
   if(isset($data[$x]['prodName'])){
       echo $data[$x]['prodName'];
       // 执行数据库插入操作
   }
}
?>

内容的提问来源于stack exchange,提问作者Jose Ortiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:07:47