2015-03-13 101 views
1

好吧,这里是我的代码来编辑数组中的特定条目,并且数组布局如下。数组编辑无法正常工作

$counter = 0; 

foreach($_SESSION['cart'] as $listitem){ 

    if ($listitem[0] == $_POST['product']){ 
     if ($listitem[1] <= $_POST['remove']){ 
      $remove = array($listitem[0], 0); 
      $_SESSION['cart'][$counter] = $remove; 
     } else { 
      $result = $listitem[1] - $_POST['remove']; 
      $remove = array($listitem[0], $result); 
      $_SESSION['cart'][$counter] = $remove; 
     } 
    } 

$counter = $counter++; 
} 

这里是我的$_SESSION['Cart']阵列布局

Array( 


- [0] => Array ([0] => 8 [1] => 0) 
- [1] => Array ([0] => 10 [1] => 0)  
- [2] => Array ([0] => 8 [1] => 1) 

) 

,要么是我数组的理解是错误的这行代码:

$_SESSION['cart'][$counter] 

还是我的柜台将不计算:

$counter = $counter++; 

因为它保持编辑第一个条目的唯一值[0]

任何人都可以看到我出错的地方吗?

+0

将'$ counter = $ counter ++'改为'$ counter ++'或'$ counter = $ counter + 1'或'$ counter + = 1'或'++ $ counter'等。 – Jonathon 2015-03-13 13:31:11

+0

请阅读[increment and递减运算符](http://php.net/manual/en/language.operators.increment.php)。 – 2015-03-13 13:32:29

+0

感谢所有的答案,白痴新手的错误,有一件事一直困扰我超过一个小时.. – PirateScott 2015-03-13 13:42:10

回答

2

$counter = $counter++什么都不会做。

$counter++增量$counter价值,但评估它的当前值(一个是增量前有)。这样,你就可以设置$counter来拥有自己的价值,而这通常不会有太大的作用。

只需改为$counter++

(附加信息:也有在预先递增运算符,++$counter,这增加变量,并返回值。)

+0

它有一个$计数器= 0;如果这不适用,那么在foreach之上? – PirateScott 2015-03-13 13:31:50

+0

当您执行'$ counter ++'时,它会将$ counter增加1,但它会在它被更改之前返回它**的值,所以基本上,您正在执行'$ counter = $ counter'或'$ counter = 0' – Jonathon 2015-03-13 13:33:03

+0

啊,我看到我现在做错了什么...非常感谢:P – PirateScott 2015-03-13 13:33:07

0

$计数器= $计数器++将计数器设置$其当前值,然后增加一个。这是一个多余的陈述。如果你打算只是将变量$ counter加1,那么就使用$ counter ++。