【问题标题】:For loop is not working properly-its skipping sometimesFor 循环无法正常工作 - 有时会跳过
【发布时间】:2023-03-04 02:30:01
【问题描述】:

我有一款产品叫定制礼盒,有5、9、12等不同尺寸。

当用户选择礼品盒中的商品并添加到购物车时,我也会使用巧克力的数量来获取这些巧克力名称。

在下面的代码中,我写了如果产品名称包含自定义然后在 for 循环中使用会话获取相关巧克力。

For 循环可以正常工作,但有时却不能。

如何解决?

<?php 
if(stristr($this->getProductUrl(),"customized")){
?>
<div>
<?php
echo "<br/>";

$itid = $_item->getId();
echo $itid;
$strrep = str_replace(' ','_',$this->htmlEscape($this->getProductName()));
for($k=1;$k<=sizeof($_SESSION[$strrep."item".$itid]);$k++){
  if($_SESSION[$strrep."item".$itid][$k]!=""){
    echo "&nbsp;&nbsp;&nbsp;<font size='1px'>".$_SESSION[$strrep."qty".$itid][$k]." x ".$_SESSION[$strrep."item".$itid][$k]."</font><br/>";
  }
}
?>

</div>

【问题讨论】:

  • 在你的for循环中if条件有时true,有时false
  • 听起来你有时会遗漏一些东西 :) 它可能是 SESSION 变量。确保 $_SESSION[$strrep."item".$itid] 在你的 forloop 之前有一个值。
  • @TolgaEvcimen 我已经检查过了。问题出在会话上。如果产品有 10 个子产品,会话仅显示 3 到 4 个产品,有时它显示正确..
  • 那么我想您应该仔细检查将这些产品对象保存到会话中的代码片段。你可能会遗漏一些东西。而且我觉得我需要对会话的使用提出建议,只是将其用于会话目的,例如身份验证,而不是用于业务逻辑操作,而是使用 get 或 post 变量。

标签: php for-loop


【解决方案1】:

for 循环以 1 开始,以 sizeof 的元素结束。数组索引在 PHP 中为零,所以你应该这样做

for ($k=0;$k<count($_SESSION[$strrep."item".$itid]);$k++){
  ...
}

相反。我还用count() 替换了sizeof(),但这是一个偏好问题......

【讨论】:

  • 已使用 count() 而不是 sizeof() 但我仍然没有正确获得输出
  • 您的循环是否从$k=0 开始并以i &lt; count(...) 结束(不是 &lt;=)? .. 当然,正如亚历山大·拉里科夫已经说过的那样:只有在满足if($_SESSION[$strrep."item".$itid][$k]!="") 条件时才会回显,而$k 的所有值不一定都是这种情况。
猜你喜欢
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2020-01-30
  • 2013-06-26
  • 2016-01-01
  • 2021-09-26
相关资源
最近更新 更多