当第二个存储在 php 中时,数组值被替换
Posted
技术标签:
【中文标题】当第二个存储在 php 中时,数组值被替换【英文标题】:Array value is replaced when second one stores in php 【发布时间】:2015-11-25 10:20:46 【问题描述】:我将会话值存储到从 URL 获取的数组中并尝试显示它(获取购物车中产品的大小)。 但是第一个值被第二个替换。
我的代码:
if(isset($_POST['radio']))
$_SESSION['sz']=$_POST['radio'];
$si=$_SESSION['sz'];
<a href="product_detail.php?pdt_id='.$pdid.'&add=' .$pdid .'&size='.$si.'"
class="cartBtn" onclick="return fun1()">Add to cart</a>';
?>
显示页面:
$rt=$_GET['size'];
$_SESSION['wer']=$rt;
$array = $_SESSION['wer']; //Assigns session var to $array
//print_r($array);
echo $array[$x];
【问题讨论】:
嘿...什么是 "$x" ? oO 抱歉行不见了... for( $x = 0, $max = count($array); $x 您的<a
有很多错误。你不存储它也不回显它,所以我不知道它是什么。而且您不会正确使用点。将您的 替换为 <a href= "product_detail.php?pdt_id=$pdid&add=$pdid&size=$si" class="cartBtn" onclick="return fun1()">Add to cart</a>;
因为你写它的方式你的网址看起来像product_detail.php?pdt_id='.$pdid.'&add=' .$pdid
,它看起来根本不像一个网址......
【参考方案1】:
关于第一部分错误:
<?php
if(isset($_POST['radio']))
$_SESSION['sz']=$_POST['radio'];
$si=$_SESSION['sz'];
<a href="product_detail.php?pdt_id='.$pdid.'&add=' .$pdid .'&size='.$si.'" class="cartBtn" onclick="return fun1()">Add to cart</a>';
?>
正如@Hearner 所说,您的 a 标签完全错误。它应该在 php 标记之外或内部带有这样的“回声”:
echo "<a href='product_detail.php?pdt_id=".$pdid."&add=".$pdid."&size=".$si."' class='cartBtn' onclick='return fun1()'>Add to cart</a>";
您无法从 if 语句中访问 $si 变量。如这里所写,如果您的 $si 之前未声明(因为您说它不是您的完整代码......),那么 $si (在链接href中)不存在。因此,您应该在 if 语句之前声明它,或者将链接(标签)也放在 if 语句中!
如果您的“$_POST['radio']”未设置怎么办?发生什么了?代码丢失... !!是否仍然声明了 $si?
关于第二部分:
<?php
for( $x = 0, $max = count($array); $x < $max; ++$x )
$rt=$_GET['size'];
$_SESSION['wer']=$rt;
$array = $_SESSION['wer'];
echo $array[$x];
?>
我不明白您在这里要做什么...需要更多代码/信息...如果没有您的完整代码,将无法提供更多帮助...
编辑:
这是一个非常简单的示例,向您展示如何将 get var 保存到会话数组中。
第一页(pageOne.php):
<?php
session_start();
if(!(isset($_SESSION['myTest'])))
$_SESSION['myTest'] = "AWESOME";
$_SESSION['varToKeep'] = [];
else
echo "A session is already started. This is : ".$_SESSION['myTest']."<br/>";
if(count($_SESSION['varToKeep']>0))
echo "There are ".count($_SESSION['varToKeep'])." vars in the array!<br/>";
for($i=0;$i<count($_SESSION['varToKeep']);$i++)
echo "Item ".$i." : ".$_SESSION['varToKeep'][$i]."<br/>";
echo "<br/>Click below to add a value in array<br/>";
$random = rand(1,100);
echo "<a href='pageTwo.php?mygetvar=STACKTEST".$random."'>Click here</a>";
?>
第二页(pageTwo.php):
<?php
session_start();
echo "myTest value is : ".$_SESSION['myTest']."<br/><br/>";
$value = $_GET['mygetvar'];
$_SESSION['varToKeep'][] = $value;
echo "<a href='pageOne.php'>CLICK HERE TO RETURN ON PAGE ONE!</a>";
?>
【讨论】:
我所有的数组值都被最后一个值替换:结果是这样的数组([0] => 3 [1] => 3 [2] => 3) 您到处都有打开/关闭 php 标签...您的代码一团糟...您真的应该注意语法并保持代码可读...我在这里评论了您的 productdetailpage pastebin.com/RD1zZ5Kg并尝试“订购”您的购物车文件,但没有真正检查这里的逻辑pastebin.com/YtpFSvWR 尝试“隔离”问题。搞清楚有什么问题。并尝试在不使用其余代码的情况下仅解决问题...然后,检查您的代码有什么区别并一一检查... 嗨 juloOsS..非常感谢您的帮助...我会调查并让您回来。 确切的问题是,在单击单选按钮时的产品详细信息页面中,该值存储在会话变量中。并且在购物车乐趣页面中存储如下。 $sif=$_SESSION['sz']; $sdp[]=$sif; print_r($sdp) ;页面尝试将其存储在数组中。第一项没问题...当尝试添加第二项时,整个值被最后一个值替换..就像添加更多项时...问题仅适用于大小... 如果您切换页面,您会丢失页面变量...尝试使用会话数组而不是会话变量,例如 $_SESSION['sz'][] 而不是 var[] ;以上是关于当第二个存储在 php 中时,数组值被替换的主要内容,如果未能解决你的问题,请参考以下文章